diff options
Diffstat (limited to 'contrib/gcc/config/rs6000')
29 files changed, 8570 insertions, 5117 deletions
diff --git a/contrib/gcc/config/rs6000/aix.h b/contrib/gcc/config/rs6000/aix.h index f189407..b14107f 100644 --- a/contrib/gcc/config/rs6000/aix.h +++ b/contrib/gcc/config/rs6000/aix.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for IBM RS/6000 POWER running AIX. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GCC. @@ -175,15 +175,15 @@ #define JUMP_TABLES_IN_TEXT_SECTION 1 /* Enable AIX XL compiler calling convention breakage compatibility. */ -#undef TARGET_XL_CALL -#define MASK_XL_CALL 0x40000000 -#define TARGET_XL_CALL (target_flags & MASK_XL_CALL) +#undef TARGET_XL_COMPAT +#define MASK_XL_COMPAT 0x40000000 +#define TARGET_XL_COMPAT (target_flags & MASK_XL_COMPAT) #undef SUBTARGET_SWITCHES #define SUBTARGET_SWITCHES \ - {"xl-call", MASK_XL_CALL, \ - N_("Always pass floating-point arguments in memory") }, \ - {"no-xl-call", - MASK_XL_CALL, \ - N_("Don't always pass floating-point arguments in memory") }, \ + {"xl-compat", MASK_XL_COMPAT, \ + N_("Conform more closely to IBM XLC semantics") }, \ + {"no-xl-compat", - MASK_XL_COMPAT, \ + N_("Default GCC semantics that differ from IBM XLC") }, \ SUBSUBTARGET_SWITCHES #define SUBSUBTARGET_SWITCHES @@ -209,7 +209,7 @@ code that does the save/restore is generated by the linker, so we have no good way to determine at compile time what to do. */ -#ifdef __powerpc64__ +#ifdef __64BIT__ #define MD_FROB_UPDATE_CONTEXT(CTX, FS) \ do { \ if ((FS)->regs.reg[2].how == REG_UNSAVED) \ diff --git a/contrib/gcc/config/rs6000/aix41.h b/contrib/gcc/config/rs6000/aix41.h index 373c10c..542f928 100644 --- a/contrib/gcc/config/rs6000/aix41.h +++ b/contrib/gcc/config/rs6000/aix41.h @@ -98,3 +98,7 @@ #undef RS6000_CALL_GLUE #define RS6000_CALL_GLUE "{cror 31,31,31|nop}" +/* The IBM AIX 4.x assembler doesn't support forward references in + .set directives. We handle this by deferring the output of .set + directives to the end of the compilation unit. */ +#define TARGET_DEFERRED_OUTPUT_DEFS(DECL,TARGET) true diff --git a/contrib/gcc/config/rs6000/aix43.h b/contrib/gcc/config/rs6000/aix43.h index a76e694..50bd304 100644 --- a/contrib/gcc/config/rs6000/aix43.h +++ b/contrib/gcc/config/rs6000/aix43.h @@ -187,3 +187,8 @@ do { \ #undef LD_INIT_SWITCH #define LD_INIT_SWITCH "-binitfini" + +/* The IBM AIX 4.x assembler doesn't support forward references in + .set directives. We handle this by deferring the output of .set + directives to the end of the compilation unit. */ +#define TARGET_DEFERRED_OUTPUT_DEFS(DECL,TARGET) true diff --git a/contrib/gcc/config/rs6000/aix52.h b/contrib/gcc/config/rs6000/aix52.h index c066650..6f12619 100644 --- a/contrib/gcc/config/rs6000/aix52.h +++ b/contrib/gcc/config/rs6000/aix52.h @@ -193,3 +193,7 @@ do { \ #undef TARGET_C99_FUNCTIONS #define TARGET_C99_FUNCTIONS 1 +#ifndef _AIX52 +extern long long int atoll(const char *); +#endif + diff --git a/contrib/gcc/config/rs6000/altivec.h b/contrib/gcc/config/rs6000/altivec.h index 04d120d..779b428 100644 --- a/contrib/gcc/config/rs6000/altivec.h +++ b/contrib/gcc/config/rs6000/altivec.h @@ -32,46 +32,29 @@ #ifndef _ALTIVEC_H #define _ALTIVEC_H 1 -/* Required by Motorola specs. */ -#define __VEC__ 10206 - -#ifndef __ALTIVEC__ -#define __ALTIVEC__ 1 +#if !defined(__VEC__) || !defined(__ALTIVEC__) +#error Use the "-maltivec" flag to enable PowerPC AltiVec support #endif -#define __vector __attribute__((vector_size(16))) +/* If __APPLE_ALTIVEC__ is defined, the compiler supports 'vector', + 'pixel' and 'bool' as context-sensitive AltiVec keywords (in + non-AltiVec contexts, they revert to their original meanings, + if any), so we do not need to define them as macros. */ -/* You are allowed to undef this for C++ compatibility. */ +#if !defined(__APPLE_ALTIVEC__) +/* You are allowed to undef these for C++ compatibility. */ #define vector __vector +#define pixel __pixel +#define bool __bool +#endif -#define bool signed -#define pixel unsigned short -#define __pixel unsigned short - -/* Dummy prototype. */ -extern int __altivec_link_error_invalid_argument (); - -/* Helper macros. */ +/* Condition register codes for AltiVec predicates. */ #define __CR6_EQ 0 #define __CR6_EQ_REV 1 #define __CR6_LT 2 #define __CR6_LT_REV 3 -#define __bin_args_eq(xtype, x, ytype, y) \ - (__builtin_types_compatible_p (xtype, typeof (x)) \ - && __builtin_types_compatible_p (ytype, typeof (y))) - -#define __un_args_eq(xtype, x) \ - __builtin_types_compatible_p (xtype, typeof (x)) - -#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) - /* These are easy... Same exact arguments. */ #define vec_vaddcuw vec_addc @@ -122,1077 +105,1434 @@ extern "C++" { /* Prototypes for builtins that take literals and must always be inlined. */ -inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline)); -inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline)); -inline vector float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline)); -inline vector float vec_vcfux (vector unsigned int a1, const char a2) __attribute__ ((always_inline)); -inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline)); -inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline)); -inline void vec_dss (const char) __attribute__ ((always_inline)); - -inline void vec_dst (vector unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dst (float *, int, const char) __attribute__ ((always_inline)); - -inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline)); - -inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline)); - -inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline)); -inline void vec_dstt (float *, int, const char) __attribute__ ((always_inline)); - -inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline)); -inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline)); -inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline)); -inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline)); -inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline)); -inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline)); -inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline)); -inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline)); -inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline)); -inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline)); -inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline)); -inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline)); -inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline)); -inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline)); -inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline)); -inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline)); -inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline)); -inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline)); -inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline)); -inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline)); -inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline)); -inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline)); -inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline)); -inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline)); -inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline)); -inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline)); -inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline)); +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<__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<__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<__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<__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<__vector __bool char> +{ + static const int _S_elem = 16; +}; + +template<> +struct __vec_step_help<__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) +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) +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) +inline __vector signed int +vec_abs (__vector signed int a1) { return __builtin_altivec_abs_v4si (a1); } -inline vector float -vec_abs (vector float 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) +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) +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) +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 signed char a1, vector signed char a2) +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 char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); + return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_add (vector signed char a1, vector unsigned char a2) +inline __vector signed short +vec_add (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); + return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_add (vector unsigned char a1, vector signed char a2) +inline __vector signed short +vec_add (__vector signed short a1, __vector signed short a2) { - return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); + return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_add (vector unsigned char a1, vector unsigned char a2) +inline __vector unsigned short +vec_add (__vector __bool short a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); + return (__vector unsigned 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) +inline __vector unsigned short +vec_add (__vector unsigned short a1, __vector __bool short a2) { - return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned short -vec_add (vector signed short a1, vector unsigned 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); + 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 signed short a2) +inline __vector signed int +vec_add (__vector __bool int a1, __vector signed int a2) { - return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); + return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_add (vector unsigned short a1, vector unsigned short a2) +inline __vector signed int +vec_add (__vector signed int a1, __vector __bool int a2) { - return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) 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) +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); + return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_add (vector signed int a1, vector unsigned 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); + 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 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); + 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) +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); + 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) +inline __vector float +vec_add (__vector float a1, __vector float a2) { - return (vector float) __builtin_altivec_vaddfp ((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) +inline __vector float +vec_vaddfp (__vector float a1, __vector float a2) { - return (vector float) __builtin_altivec_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 signed int a1, vector signed int a2) +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); + return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_vadduwm (vector signed int a1, vector unsigned int a2) +inline __vector signed int +vec_vadduwm (__vector signed int a1, __vector __bool int a2) { - return (vector unsigned int) __builtin_altivec_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 unsigned int a1, vector signed int a2) +inline __vector signed int +vec_vadduwm (__vector signed int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_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 unsigned int a1, vector unsigned 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); + 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 signed short a1, vector signed short a2) +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); + return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned short -vec_vadduhm (vector signed short a1, vector unsigned short a2) +inline __vector signed short +vec_vadduhm (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned short) __builtin_altivec_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 unsigned short a1, vector signed short a2) +inline __vector signed short +vec_vadduhm (__vector signed short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_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 unsigned short a1, vector unsigned 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); + 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 signed char a1, vector signed char a2) +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); + return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned char -vec_vaddubm (vector signed char a1, vector unsigned 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); + 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 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); + 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) +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); + 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) +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); + return (__vector unsigned int) __builtin_altivec_vaddcuw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_adds */ -inline vector unsigned char -vec_adds (vector signed char a1, vector unsigned char a2) +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 char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); + return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_adds (vector unsigned char a1, vector signed char a2) +inline __vector unsigned short +vec_adds (__vector unsigned short a1, __vector __bool short a2) { - return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); + return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_adds (vector unsigned char a1, vector unsigned char a2) +inline __vector unsigned short +vec_adds (__vector unsigned short a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); + return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed char -vec_adds (vector signed char a1, vector signed char a2) +inline __vector signed short +vec_adds (__vector __bool short a1, __vector signed short a2) { - return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); + return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned short -vec_adds (vector signed short a1, vector unsigned short a2) +inline __vector signed short +vec_adds (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned short) __builtin_altivec_vadduhs ((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 short -vec_adds (vector unsigned short a1, vector signed short a2) +inline __vector signed short +vec_adds (__vector signed short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_vadduhs ((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 short -vec_adds (vector unsigned short a1, vector unsigned short a2) +inline __vector unsigned int +vec_adds (__vector __bool int a1, __vector unsigned int a2) { - return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); } -inline vector signed short -vec_adds (vector signed short a1, vector signed short a2) +inline __vector unsigned int +vec_adds (__vector unsigned int a1, __vector __bool int a2) { - return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_adds (vector signed int a1, vector unsigned 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); + 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 signed int a2) +inline __vector signed int +vec_adds (__vector __bool int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); + return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_adds (vector unsigned int a1, vector unsigned int a2) +inline __vector signed int +vec_adds (__vector signed int a1, __vector __bool int a2) { - return (vector unsigned int) __builtin_altivec_vadduws ((vector signed 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 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); + return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vaddsws */ -inline vector signed int -vec_vaddsws (vector signed int a1, vector signed int a2) +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); + 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 signed int a1, vector unsigned int a2) +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); + 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 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); + 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) +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); + return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vaddshs */ -inline vector signed short -vec_vaddshs (vector signed short a1, vector signed short a2) + +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); + 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 signed short a1, vector unsigned short a2) +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); + 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 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vaddsbs */ -inline vector signed char -vec_vaddsbs (vector signed char a1, vector signed char a2) +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); + 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 signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +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); + 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) +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); + return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_and (vector float 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); + return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_and (vector signed int a1, vector float 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); + return (__vector float) __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) +inline __vector __bool int +vec_and (__vector __bool int a1, __vector __bool int a2) { - return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_and (vector signed int a1, vector unsigned int a2) +inline __vector signed int +vec_and (__vector __bool int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_vand ((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 unsigned int a1, vector signed int a2) +inline __vector signed int +vec_and (__vector signed int a1, __vector __bool int a2) { - return (vector unsigned int) __builtin_altivec_vand ((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 unsigned int a1, vector unsigned int a2) +inline __vector signed int +vec_and (__vector signed int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_vand ((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 signed short -vec_and (vector signed short a1, vector signed short a2) +inline __vector unsigned int +vec_and (__vector __bool int a1, __vector unsigned int a2) { - return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_and (vector signed short a1, vector unsigned short a2) +inline __vector unsigned int +vec_and (__vector unsigned int a1, __vector __bool int a2) { - return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_and (vector unsigned short a1, vector signed short a2) +inline __vector unsigned int +vec_and (__vector unsigned int a1, __vector unsigned int a2) { - return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __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) +inline __vector __bool short +vec_and (__vector __bool short a1, __vector __bool short a2) { - return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool short) __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) +inline __vector signed short +vec_and (__vector __bool short a1, __vector signed short a2) { - return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_and (vector signed char a1, vector unsigned char a2) +inline __vector signed short +vec_and (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_and (vector unsigned char a1, vector signed char a2) +inline __vector signed short +vec_and (__vector signed short a1, __vector signed short a2) { - return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_and (__vector __bool short a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) 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) +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 float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_andc (vector float a1, vector signed int a2) +inline __vector __bool short +vec_andc (__vector __bool short a1, __vector __bool short a2) { - return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_andc (vector signed int a1, vector float a2) +inline __vector signed short +vec_andc (__vector __bool short a1, __vector signed short a2) { - return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector signed short +vec_andc (__vector signed short a1, __vector __bool short a2) { - return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_andc (vector signed int a1, vector unsigned int a2) +inline __vector signed short +vec_andc (__vector signed short a1, __vector signed short a2) { - return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_andc (vector unsigned int a1, vector signed int a2) +inline __vector unsigned short +vec_andc (__vector __bool short a1, __vector unsigned short a2) { - return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector unsigned short +vec_andc (__vector unsigned short a1, __vector __bool short a2) { - return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned 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) +inline __vector unsigned short +vec_andc (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_andc (vector signed short a1, vector unsigned short a2) +inline __vector signed char +vec_andc (__vector __bool char a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_andc (vector unsigned short a1, vector signed short a2) +inline __vector __bool char +vec_andc (__vector __bool char a1, __vector __bool char a2) { - return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool char) __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) +inline __vector signed char +vec_andc (__vector signed char a1, __vector __bool char a2) { - return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) 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) +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); + return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_andc (vector signed char a1, vector unsigned char 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); + 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 signed char 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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +inline __vector float +vec_ceil (__vector float a1) { - return (vector float) __builtin_altivec_vrfip ((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) +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); + return (__vector signed int) __builtin_altivec_vcmpbfp ((__vector float) a1, (__vector float) a2); } /* vec_cmpeq */ -inline vector signed char -vec_cmpeq (vector signed char a1, vector signed char a2) +inline __vector __bool char +vec_cmpeq (__vector signed char a1, __vector signed char a2) { - return (vector signed char) __builtin_altivec_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 signed char -vec_cmpeq (vector unsigned char a1, vector unsigned char a2) +inline __vector __bool char +vec_cmpeq (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_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 signed short -vec_cmpeq (vector signed short a1, vector signed short a2) +inline __vector __bool short +vec_cmpeq (__vector signed short a1, __vector signed short a2) { - return (vector signed short) __builtin_altivec_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 signed short -vec_cmpeq (vector unsigned short a1, vector unsigned short a2) +inline __vector __bool short +vec_cmpeq (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_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 signed int -vec_cmpeq (vector signed int a1, vector signed int a2) +inline __vector __bool int +vec_cmpeq (__vector signed int a1, __vector signed int a2) { - return (vector signed int) __builtin_altivec_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 signed int -vec_cmpeq (vector unsigned int a1, vector unsigned int a2) +inline __vector __bool int +vec_cmpeq (__vector unsigned int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_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 signed int -vec_cmpeq (vector float a1, vector float a2) +inline __vector __bool int +vec_cmpeq (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); + return (__vector __bool int) __builtin_altivec_vcmpeqfp ((__vector float) a1, (__vector float) a2); } /* vec_vcmpeqfp */ -inline vector signed int -vec_vcmpeqfp (vector float a1, vector float a2) +inline __vector __bool int +vec_vcmpeqfp (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); + return (__vector __bool int) __builtin_altivec_vcmpeqfp ((__vector float) a1, (__vector float) a2); } /* vec_vcmpequw */ -inline vector signed int -vec_vcmpequw (vector signed int a1, vector signed int a2) +inline __vector __bool int +vec_vcmpequw (__vector signed int a1, __vector signed int a2) { - return (vector signed int) __builtin_altivec_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 signed int -vec_vcmpequw (vector unsigned int a1, vector unsigned int a2) +inline __vector __bool int +vec_vcmpequw (__vector unsigned int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vcmpequh */ -inline vector signed short -vec_vcmpequh (vector signed short a1, vector signed short a2) +inline __vector __bool short +vec_vcmpequh (__vector signed short a1, __vector signed short a2) { - return (vector signed short) __builtin_altivec_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 signed short -vec_vcmpequh (vector unsigned short a1, vector unsigned short a2) +inline __vector __bool short +vec_vcmpequh (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); + return (__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vcmpequb */ -inline vector signed char -vec_vcmpequb (vector signed char a1, vector signed char a2) +inline __vector __bool char +vec_vcmpequb (__vector signed char a1, __vector signed char a2) { - return (vector signed char) __builtin_altivec_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 signed char -vec_vcmpequb (vector unsigned char a1, vector unsigned char a2) +inline __vector __bool char +vec_vcmpequb (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); + return (__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2); } /* vec_cmpge */ -inline vector signed int -vec_cmpge (vector float a1, vector float a2) +inline __vector __bool int +vec_cmpge (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2); + return (__vector __bool int) __builtin_altivec_vcmpgefp ((__vector float) a1, (__vector float) a2); } /* vec_cmpgt */ -inline vector signed char -vec_cmpgt (vector unsigned char a1, vector unsigned char a2) +inline __vector __bool char +vec_cmpgt (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); + return (__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a1, (__vector signed char) a2); } -inline vector signed char -vec_cmpgt (vector signed char a1, vector signed char a2) +inline __vector __bool char +vec_cmpgt (__vector signed char a1, __vector signed char a2) { - return (vector signed char) __builtin_altivec_vcmpgtsb ((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 signed short -vec_cmpgt (vector unsigned short a1, vector unsigned short a2) +inline __vector __bool short +vec_cmpgt (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); + return (__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed short -vec_cmpgt (vector signed short a1, vector signed short a2) +inline __vector __bool short +vec_cmpgt (__vector signed short a1, __vector signed short a2) { - return (vector signed short) __builtin_altivec_vcmpgtsh ((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 signed int -vec_cmpgt (vector unsigned int a1, vector unsigned int a2) +inline __vector __bool int +vec_cmpgt (__vector unsigned int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a1, (__vector signed int) a2); } -inline vector signed int -vec_cmpgt (vector signed int a1, vector signed int a2) +inline __vector __bool int +vec_cmpgt (__vector signed int a1, __vector signed int a2) { - return (vector signed int) __builtin_altivec_vcmpgtsw ((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 signed int -vec_cmpgt (vector float a1, vector float a2) +inline __vector __bool int +vec_cmpgt (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); + return (__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) a1, (__vector float) a2); } /* vec_vcmpgtfp */ -inline vector signed int -vec_vcmpgtfp (vector float a1, vector float a2) +inline __vector __bool int +vec_vcmpgtfp (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); + return (__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) a1, (__vector float) a2); } /* vec_vcmpgtsw */ -inline vector signed int -vec_vcmpgtsw (vector signed int a1, vector signed int a2) +inline __vector __bool int +vec_vcmpgtsw (__vector signed int a1, __vector signed int a2) { - return (vector signed int) __builtin_altivec_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 signed int -vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2) +inline __vector __bool int +vec_vcmpgtuw (__vector unsigned int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vcmpgtsh */ -inline vector signed short -vec_cmpgtsh (vector signed short a1, vector signed short a2) +inline __vector __bool short +vec_vcmpgtsh (__vector signed short a1, __vector signed short a2) { - return (vector signed short) __builtin_altivec_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 signed short -vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2) +inline __vector __bool short +vec_vcmpgtuh (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); + return (__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vcmpgtsb */ -inline vector signed char -vec_vcmpgtsb (vector signed char a1, vector signed char a2) +inline __vector __bool char +vec_vcmpgtsb (__vector signed char a1, __vector signed char a2) { - return (vector signed char) __builtin_altivec_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 signed char -vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2) +inline __vector __bool char +vec_vcmpgtub (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); + return (__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a1, (__vector signed char) a2); } /* vec_cmple */ -inline vector signed int -vec_cmple (vector float a1, vector float a2) +inline __vector __bool int +vec_cmple (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1); + return (__vector __bool int) __builtin_altivec_vcmpgefp ((__vector float) a2, (__vector float) a1); } /* vec_cmplt */ -inline vector signed char -vec_cmplt (vector unsigned char a1, vector unsigned char a2) +inline __vector __bool char +vec_cmplt (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1); + return (__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a2, (__vector signed char) a1); } -inline vector signed char -vec_cmplt (vector signed char a1, vector signed char a2) +inline __vector __bool char +vec_cmplt (__vector signed char a1, __vector signed char a2) { - return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1); + return (__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a2, (__vector signed char) a1); } -inline vector signed short -vec_cmplt (vector unsigned short a1, vector unsigned short a2) +inline __vector __bool short +vec_cmplt (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1); + return (__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a2, (__vector signed short) a1); } -inline vector signed short -vec_cmplt (vector signed short a1, vector signed short a2) +inline __vector __bool short +vec_cmplt (__vector signed short a1, __vector signed short a2) { - return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1); + return (__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a2, (__vector signed short) a1); } -inline vector signed int -vec_cmplt (vector unsigned int a1, vector unsigned int a2) +inline __vector __bool int +vec_cmplt (__vector unsigned int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1); + return (__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a2, (__vector signed int) a1); } -inline vector signed int -vec_cmplt (vector signed int a1, vector signed int a2) +inline __vector __bool int +vec_cmplt (__vector signed int a1, __vector signed int a2) { - return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1); + return (__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a2, (__vector signed int) a1); } -inline vector signed int -vec_cmplt (vector float a1, vector float a2) +inline __vector __bool int +vec_cmplt (__vector float a1, __vector float a2) { - return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1); + 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 char a2) +inline __vector float +vec_ctf (__vector unsigned int a1, const int a2) { - return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); + return (__vector float) __builtin_altivec_vcfux ((__vector signed int) a1, a2); } -inline vector float -vec_ctf (vector signed int a1, const char a2) +inline __vector float +vec_ctf (__vector signed int a1, const int a2) { - return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); + return (__vector float) __builtin_altivec_vcfsx ((__vector signed int) a1, a2); } /* vec_vcfsx */ -inline vector float -vec_vcfsx (vector signed int a1, const char a2) +inline __vector float +vec_vcfsx (__vector signed int a1, const int a2) { - return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); + return (__vector float) __builtin_altivec_vcfsx ((__vector signed int) a1, a2); } /* vec_vcfux */ -inline vector float -vec_vcfux (vector unsigned int a1, const char a2) +inline __vector float +vec_vcfux (__vector unsigned int a1, const int a2) { - return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); + return (__vector float) __builtin_altivec_vcfux ((__vector signed int) a1, a2); } /* vec_cts */ -inline vector signed int -vec_cts (vector float a1, const char a2) +inline __vector signed int +vec_cts (__vector float a1, const int a2) { - return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2); + return (__vector signed int) __builtin_altivec_vctsxs ((__vector float) a1, a2); } /* vec_ctu */ -inline vector unsigned int -vec_ctu (vector float a1, const char a2) +inline __vector unsigned int +vec_ctu (__vector float a1, const int a2) { - return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2); + return (__vector unsigned int) __builtin_altivec_vctuxs ((__vector float) a1, a2); } /* vec_dss */ inline void -vec_dss (const char a1) +vec_dss (const int a1) { __builtin_altivec_dss (a1); } @@ -1208,97 +1548,121 @@ vec_dssall (void) /* vec_dst */ inline void -vec_dst (vector unsigned char *a1, int a2, const char a3) +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 (vector signed char *a1, int a2, const char a3) +vec_dst (const __vector __bool char *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (vector unsigned short *a1, int a2, const char a3) +vec_dst (const __vector unsigned short *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (vector signed short *a1, int a2, const char a3) +vec_dst (const __vector signed short *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (vector unsigned int *a1, int a2, const char a3) +vec_dst (const __vector __bool short *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (vector signed int *a1, int a2, const char a3) +vec_dst (const __vector __pixel *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (vector float *a1, int a2, const char a3) +vec_dst (const __vector unsigned int *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (unsigned char *a1, int a2, const char a3) +vec_dst (const __vector signed int *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (signed char *a1, int a2, const char a3) +vec_dst (const __vector __bool int *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (unsigned short *a1, int a2, const char a3) +vec_dst (const __vector float *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (signed short *a1, int a2, const char a3) +vec_dst (const unsigned char *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (unsigned int *a1, int a2, const char a3) +vec_dst (const signed char *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (signed int *a1, int a2, const char a3) +vec_dst (const unsigned short *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (unsigned long *a1, int a2, const char a3) +vec_dst (const short *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (signed long *a1, int a2, const char a3) +vec_dst (const unsigned int *a1, int a2, const int a3) { __builtin_altivec_dst ((void *) a1, a2, a3); } inline void -vec_dst (float *a1, int a2, const char a3) +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); } @@ -1306,97 +1670,121 @@ vec_dst (float *a1, int a2, const char a3) /* vec_dstst */ inline void -vec_dstst (vector unsigned char *a1, int a2, const char a3) +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 (vector signed char *a1, int a2, const char a3) +vec_dstst (const __vector unsigned short *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (vector unsigned short *a1, int a2, const char a3) +vec_dstst (const __vector signed short *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (vector signed short *a1, int a2, const char a3) +vec_dstst (const __vector __bool short *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (vector unsigned int *a1, int a2, const char a3) +vec_dstst (const __vector __pixel *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (vector signed int *a1, int a2, const char a3) +vec_dstst (const __vector unsigned int *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (vector float *a1, int a2, const char a3) +vec_dstst (const __vector signed int *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (unsigned char *a1, int a2, const char a3) +vec_dstst (const __vector __bool int *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (signed char *a1, int a2, const char a3) +vec_dstst (const __vector float *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (unsigned short *a1, int a2, const char a3) +vec_dstst (const unsigned char *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (signed short *a1, int a2, const char a3) +vec_dstst (const signed char *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (unsigned int *a1, int a2, const char a3) +vec_dstst (const unsigned short *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (signed int *a1, int a2, const char a3) +vec_dstst (const short *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (unsigned long *a1, int a2, const char a3) +vec_dstst (const unsigned int *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (signed long *a1, int a2, const char a3) +vec_dstst (const int *a1, int a2, const int a3) { __builtin_altivec_dstst ((void *) a1, a2, a3); } inline void -vec_dstst (float *a1, int a2, const char a3) +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); } @@ -1404,97 +1792,121 @@ vec_dstst (float *a1, int a2, const char a3) /* vec_dststt */ inline void -vec_dststt (vector unsigned char *a1, int a2, const char a3) +vec_dststt (const __vector unsigned char *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (vector signed char *a1, int a2, const char a3) +vec_dststt (const __vector signed char *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (vector unsigned short *a1, int a2, const char a3) +vec_dststt (const __vector __bool char *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (vector signed short *a1, int a2, const char a3) +vec_dststt (const __vector unsigned short *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (vector unsigned int *a1, int a2, const char a3) +vec_dststt (const __vector signed short *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (vector signed int *a1, int a2, const char a3) +vec_dststt (const __vector __bool short *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (vector float *a1, int a2, const char a3) +vec_dststt (const __vector __pixel *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (unsigned char *a1, int a2, const char a3) +vec_dststt (const __vector unsigned int *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (signed char *a1, int a2, const char a3) +vec_dststt (const __vector signed int *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (unsigned short *a1, int a2, const char a3) +vec_dststt (const __vector __bool int *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (signed short *a1, int a2, const char a3) +vec_dststt (const __vector float *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (unsigned int *a1, int a2, const char a3) +vec_dststt (const unsigned char *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (signed int *a1, int a2, const char a3) +vec_dststt (const signed char *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (unsigned long *a1, int a2, const char a3) +vec_dststt (const unsigned short *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (signed long *a1, int a2, const char a3) +vec_dststt (const short *a1, int a2, const int a3) { __builtin_altivec_dststt ((void *) a1, a2, a3); } inline void -vec_dststt (float *a1, int a2, const char a3) +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); } @@ -1502,3561 +1914,4931 @@ vec_dststt (float *a1, int a2, const char a3) /* vec_dstt */ inline void -vec_dstt (vector unsigned char *a1, int a2, const char a3) +vec_dstt (const __vector unsigned char *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (vector signed char *a1, int a2, const char a3) +vec_dstt (const __vector signed char *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (vector unsigned short *a1, int a2, const char a3) +vec_dstt (const __vector __bool char *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (vector signed short *a1, int a2, const char a3) +vec_dstt (const __vector unsigned short *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (vector unsigned int *a1, int a2, const char a3) +vec_dstt (const __vector signed short *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (vector signed int *a1, int a2, const char a3) +vec_dstt (const __vector __bool short *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (vector float *a1, int a2, const char a3) +vec_dstt (const __vector __pixel *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (unsigned char *a1, int a2, const char a3) +vec_dstt (const __vector unsigned int *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (signed char *a1, int a2, const char a3) +vec_dstt (const __vector signed int *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (unsigned short *a1, int a2, const char a3) +vec_dstt (const __vector __bool int *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (signed short *a1, int a2, const char a3) +vec_dstt (const __vector float *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (unsigned int *a1, int a2, const char a3) +vec_dstt (const unsigned char *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (signed int *a1, int a2, const char a3) +vec_dstt (const signed char *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (unsigned long *a1, int a2, const char a3) +vec_dstt (const unsigned short *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (signed long *a1, int a2, const char a3) +vec_dstt (const short *a1, int a2, const int a3) { __builtin_altivec_dstt ((void *) a1, a2, a3); } inline void -vec_dstt (float *a1, int a2, const char a3) +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) +inline __vector float +vec_expte (__vector float a1) { - return (vector float) __builtin_altivec_vexptefp ((vector float) a1); + return (__vector float) __builtin_altivec_vexptefp ((__vector float) a1); } /* vec_floor */ -inline vector float -vec_floor (vector float a1) +inline __vector float +vec_floor (__vector float a1) { - return (vector float) __builtin_altivec_vrfim ((vector float) a1); + return (__vector float) __builtin_altivec_vrfim ((__vector float) a1); } /* vec_ld */ -inline vector float -vec_ld (int a1, vector float *a2) +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 float) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector __bool int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector float -vec_ld (int a1, float *a2) +inline __vector signed int +vec_ld (int a1, const __vector signed int *a2) { - return (vector float) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed int -vec_ld (int a1, vector signed int *a2) +inline __vector signed int +vec_ld (int a1, const int *a2) { - return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed int -vec_ld (int a1, signed int *a2) +inline __vector signed int +vec_ld (int a1, const long *a2) { - return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed int -vec_ld (int a1, signed long *a2) +inline __vector unsigned int +vec_ld (int a1, const __vector unsigned int *a2) { - return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned int -vec_ld (int a1, vector unsigned int *a2) +inline __vector unsigned int +vec_ld (int a1, const unsigned int *a2) { - return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned int -vec_ld (int a1, unsigned int *a2) +inline __vector unsigned int +vec_ld (int a1, const unsigned long *a2) { - return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned int -vec_ld (int a1, unsigned long *a2) +inline __vector __bool short +vec_ld (int a1, const __vector __bool short *a2) { - return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector __bool short) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed short -vec_ld (int a1, vector signed short *a2) +inline __vector __pixel +vec_ld (int a1, const __vector __pixel *a2) { - return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector __pixel) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed short -vec_ld (int a1, signed short *a2) +inline __vector signed short +vec_ld (int a1, const __vector signed short *a2) { - return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector signed short) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned short -vec_ld (int a1, vector unsigned short *a2) +inline __vector signed short +vec_ld (int a1, const short *a2) { - return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector signed short) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned short -vec_ld (int a1, unsigned short *a2) +inline __vector unsigned short +vec_ld (int a1, const __vector unsigned short *a2) { - return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed char -vec_ld (int a1, vector signed char *a2) +inline __vector unsigned short +vec_ld (int a1, const unsigned short *a2) { - return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector signed char -vec_ld (int a1, signed char *a2) +inline __vector __bool char +vec_ld (int a1, const __vector __bool char *a2) { - return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector __bool char) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned char -vec_ld (int a1, vector unsigned char *a2) +inline __vector signed char +vec_ld (int a1, const __vector signed char *a2) { - return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); + return (__vector signed char) __builtin_altivec_lvx (a1, (void *) a2); } -inline vector unsigned char -vec_ld (int a1, unsigned char *a2) +inline __vector signed char +vec_ld (int a1, const signed char *a2) { - return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) 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, signed char *a2) +inline __vector signed char +vec_lde (int a1, const signed char *a2) { - return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); + return (__vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); } -inline vector unsigned char -vec_lde (int a1, unsigned char *a2) +inline __vector unsigned char +vec_lde (int a1, const unsigned char *a2) { - return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); } -inline vector signed short -vec_lde (int a1, signed short *a2) +inline __vector signed short +vec_lde (int a1, const short *a2) { - return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); + return (__vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); } -inline vector unsigned short -vec_lde (int a1, unsigned short *a2) +inline __vector unsigned short +vec_lde (int a1, const unsigned short *a2) { - return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); + return (__vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); } -inline vector float -vec_lde (int a1, float *a2) +inline __vector float +vec_lde (int a1, const float *a2) { - return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector float) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector signed int -vec_lde (int a1, signed int *a2) +inline __vector signed int +vec_lde (int a1, const int *a2) { - return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector unsigned int -vec_lde (int a1, unsigned int *a2) +inline __vector unsigned int +vec_lde (int a1, const unsigned int *a2) { - return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector signed int -vec_lde (int a1, signed long *a2) +inline __vector signed int +vec_lde (int a1, const long *a2) { - return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector unsigned int -vec_lde (int a1, unsigned long *a2) +inline __vector unsigned int +vec_lde (int a1, const unsigned long *a2) { - return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); } /* vec_lvewx */ -inline vector float +inline __vector float vec_lvewx (int a1, float *a2) { - return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector float) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector signed int -vec_lvewx (int a1, signed int *a2) +inline __vector signed int +vec_lvewx (int a1, int *a2) { - return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector unsigned int +inline __vector unsigned int vec_lvewx (int a1, unsigned int *a2) { - return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector signed int -vec_lvewx (int a1, signed long *a2) +inline __vector signed int +vec_lvewx (int a1, long *a2) { - return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); } -inline vector unsigned int +inline __vector unsigned int vec_lvewx (int a1, unsigned long *a2) { - return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); } /* vec_lvehx */ -inline vector signed short -vec_lvehx (int a1, signed short *a2) +inline __vector signed short +vec_lvehx (int a1, short *a2) { - return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); + return (__vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); } -inline vector unsigned short +inline __vector unsigned short vec_lvehx (int a1, unsigned short *a2) { - return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); + return (__vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); } /* vec_lvebx */ -inline vector signed char +inline __vector signed char vec_lvebx (int a1, signed char *a2) { - return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); + return (__vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); } -inline vector unsigned char +inline __vector unsigned char vec_lvebx (int a1, unsigned char *a2) { - return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); } /* vec_ldl */ -inline vector float -vec_ldl (int a1, vector float *a2) +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 float) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector float -vec_ldl (int a1, float *a2) +inline __vector signed int +vec_ldl (int a1, const int *a2) { - return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed int -vec_ldl (int a1, vector signed int *a2) +inline __vector signed int +vec_ldl (int a1, const long *a2) { - return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed int -vec_ldl (int a1, signed int *a2) +inline __vector unsigned int +vec_ldl (int a1, const __vector unsigned int *a2) { - return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed int -vec_ldl (int a1, signed long *a2) +inline __vector unsigned int +vec_ldl (int a1, const unsigned int *a2) { - return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned int -vec_ldl (int a1, vector unsigned int *a2) +inline __vector unsigned int +vec_ldl (int a1, const unsigned long *a2) { - return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned int -vec_ldl (int a1, unsigned int *a2) +inline __vector __bool short +vec_ldl (int a1, const __vector __bool short *a2) { - return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector __bool short) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned int -vec_ldl (int a1, unsigned long *a2) +inline __vector __pixel +vec_ldl (int a1, const __vector __pixel *a2) { - return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector __pixel) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed short -vec_ldl (int a1, vector signed short *a2) +inline __vector signed short +vec_ldl (int a1, const __vector signed short *a2) { - return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed short -vec_ldl (int a1, signed short *a2) +inline __vector signed short +vec_ldl (int a1, const short *a2) { - return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned short -vec_ldl (int a1, vector unsigned short *a2) +inline __vector unsigned short +vec_ldl (int a1, const __vector unsigned short *a2) { - return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned short -vec_ldl (int a1, unsigned short *a2) +inline __vector unsigned short +vec_ldl (int a1, const unsigned short *a2) { - return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed char -vec_ldl (int a1, vector signed char *a2) +inline __vector __bool char +vec_ldl (int a1, const __vector __bool char *a2) { - return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector __bool char) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector signed char -vec_ldl (int a1, signed char *a2) +inline __vector signed char +vec_ldl (int a1, const __vector signed char *a2) { - return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned char -vec_ldl (int a1, vector unsigned char *a2) +inline __vector signed char +vec_ldl (int a1, const signed char *a2) { - return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); + return (__vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); } -inline vector unsigned char -vec_ldl (int a1, unsigned char *a2) +inline __vector unsigned char +vec_ldl (int a1, const __vector unsigned char *a2) { - return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) 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) +inline __vector float +vec_loge (__vector float a1) { - return (vector float) __builtin_altivec_vlogefp ((vector float) a1); + return (__vector float) __builtin_altivec_vlogefp ((__vector float) a1); } /* vec_lvsl */ -inline vector unsigned char -vec_lvsl (int a1, unsigned char *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile unsigned char *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, signed char *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile signed char *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, unsigned short *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile unsigned short *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, signed short *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile short *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, unsigned int *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile unsigned int *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, signed int *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile int *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, unsigned long *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile unsigned long *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, signed long *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile long *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } -inline vector unsigned char -vec_lvsl (int a1, float *a2) +inline __vector unsigned char +vec_lvsl (int a1, const volatile float *a2) { - return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); } /* vec_lvsr */ -inline vector unsigned char -vec_lvsr (int a1, unsigned char *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile unsigned char *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, signed char *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile signed char *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, unsigned short *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile unsigned short *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, signed short *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile short *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, unsigned int *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile unsigned int *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, signed int *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile int *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, unsigned long *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile unsigned long *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, signed long *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile long *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); + return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); } -inline vector unsigned char -vec_lvsr (int a1, float *a2) +inline __vector unsigned char +vec_lvsr (int a1, const volatile float *a2) { - return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) 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) +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); + 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) +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); + 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 signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +inline __vector signed char +vec_max (__vector __bool char a1, __vector signed char a2) { - return (vector unsigned char) __builtin_altivec_vmaxub ((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 signed char -vec_max (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); + return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_max (vector signed short a1, vector unsigned short a2) +inline __vector signed char +vec_max (__vector signed char a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); + return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_max (vector unsigned short a1, vector signed short 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed short -vec_max (vector signed short a1, vector signed short a2) +inline __vector unsigned short +vec_max (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_max (vector signed int a1, vector unsigned int a2) +inline __vector signed short +vec_max (__vector __bool short a1, __vector signed short a2) { - return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_max (vector unsigned int a1, vector signed int a2) +inline __vector signed short +vec_max (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_max (vector unsigned int a1, vector unsigned int a2) +inline __vector signed short +vec_max (__vector signed short a1, __vector signed short a2) { - return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed int -vec_max (vector signed int a1, vector signed int a2) +inline __vector unsigned int +vec_max (__vector __bool int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_max (vector float a1, vector float a2) +inline __vector unsigned int +vec_max (__vector unsigned int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) 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) +inline __vector float +vec_vmaxfp (__vector float a1, __vector float a2) { - return (vector float) __builtin_altivec_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 signed int a1, vector signed int a2) +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); + 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 signed int a1, vector unsigned int a2) +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); + 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 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); + 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) +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); + return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vmaxsh */ -inline vector signed short -vec_vmaxsh (vector signed short a1, vector signed short a2) +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); + 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 signed short a1, vector unsigned short a2) +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); + 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 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vmaxsb */ -inline vector signed char -vec_vmaxsb (vector signed char a1, vector signed char a2) +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); + 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 signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +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); + return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2); } /* vec_mergeh */ -inline vector signed char -vec_mergeh (vector signed char a1, vector signed char a2) +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 signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); + return (__vector __pixel) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_mergeh (vector unsigned char a1, vector unsigned char a2) +inline __vector signed short +vec_mergeh (__vector signed short a1, __vector signed short a2) { - return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_mergeh (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned 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) +inline __vector float +vec_mergeh (__vector float a1, __vector float a2) { - return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); + return (__vector float) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_mergeh (vector float a1, vector float a2) +inline __vector __bool int +vec_mergeh (__vector __bool int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed 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) +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); + 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) +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); + 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) +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); + return (__vector float) __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) +inline __vector __bool int +vec_vmrghw (__vector __bool int a1, __vector __bool int a2) { - return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector signed int +vec_vmrghw (__vector signed int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_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 signed short -vec_vmrghh (vector signed short a1, vector signed short a2) +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); + 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) +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); + 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 signed char -vec_vmrghb (vector signed char a1, vector signed char a2) +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); + 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) +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); + return (__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2); } /* vec_mergel */ -inline vector signed char -vec_mergel (vector signed char a1, vector signed char a2) +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 signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); + return (__vector __pixel) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned char -vec_mergel (vector unsigned char a1, vector unsigned char a2) +inline __vector signed short +vec_mergel (__vector signed short a1, __vector signed short a2) { - return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_mergel (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned 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) +inline __vector float +vec_mergel (__vector float a1, __vector float a2) { - return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); + return (__vector float) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_mergel (vector float a1, vector float a2) +inline __vector __bool int +vec_mergel (__vector __bool int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed 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) +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); + 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) +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); + 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) +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 float) __builtin_altivec_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 signed int -vec_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 signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned 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) +inline __vector __bool int +vec_vmrglw (__vector __bool int a1, __vector __bool int a2) { - return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vmrglh */ -inline vector signed short -vec_vmrglh (vector signed short a1, vector signed short a2) +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 signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned 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) +inline __vector __pixel +vec_vmrglh (__vector __pixel a1, __vector __pixel a2) { - return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); + return (__vector __pixel) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vmrglb */ -inline vector signed char -vec_vmrglb (vector signed char a1, vector signed char a2) +inline __vector __bool char +vec_vmrglb (__vector __bool char a1, __vector __bool char a2) { - return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); + return (__vector __bool 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) +inline __vector signed char +vec_vmrglb (__vector signed char a1, __vector signed char a2) { - return (vector unsigned char) __builtin_altivec_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 +inline __vector unsigned short vec_mfvscr (void) { - return (vector unsigned short) __builtin_altivec_mfvscr (); + return (__vector unsigned short) __builtin_altivec_mfvscr (); } /* vec_min */ -inline vector unsigned char -vec_min (vector signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +inline __vector signed char +vec_min (__vector __bool char a1, __vector signed char a2) { - return (vector unsigned char) __builtin_altivec_vminub ((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 signed char -vec_min (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); + return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_min (vector signed short a1, vector unsigned short a2) +inline __vector signed char +vec_min (__vector signed char a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); + return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_min (vector unsigned short a1, vector signed short 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed short -vec_min (vector signed short a1, vector signed short a2) +inline __vector unsigned short +vec_min (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_min (vector signed int a1, vector unsigned int a2) +inline __vector signed short +vec_min (__vector __bool short a1, __vector signed short a2) { - return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_min (vector unsigned int a1, vector signed int a2) +inline __vector signed short +vec_min (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_min (vector unsigned int a1, vector unsigned int a2) +inline __vector signed short +vec_min (__vector signed short a1, __vector signed short a2) { - return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed int -vec_min (vector signed int a1, vector signed int a2) +inline __vector unsigned int +vec_min (__vector __bool int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_min (vector float a1, vector float a2) +inline __vector unsigned int +vec_min (__vector unsigned int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) 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) +inline __vector float +vec_vminfp (__vector float a1, __vector float a2) { - return (vector float) __builtin_altivec_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 signed int a1, vector signed int a2) +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); + 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 signed int a1, vector unsigned int a2) +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); + 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 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); + 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) +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); + return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vminsh */ -inline vector signed short -vec_vminsh (vector signed short a1, vector signed short a2) +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); + 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 signed short a1, vector unsigned short a2) +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); + 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 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vminsb */ -inline vector signed char -vec_vminsb (vector signed char a1, vector signed char a2) +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); + 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 signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + __builtin_altivec_mtvscr ((__vector signed int) a1); } inline void -vec_mtvscr (vector unsigned int a1) +vec_mtvscr (__vector signed short a1) { - __builtin_altivec_mtvscr ((vector signed int) a1); + __builtin_altivec_mtvscr ((__vector signed int) a1); } inline void -vec_mtvscr (vector signed short a1) +vec_mtvscr (__vector unsigned short a1) { - __builtin_altivec_mtvscr ((vector signed int) a1); + __builtin_altivec_mtvscr ((__vector signed int) a1); } inline void -vec_mtvscr (vector unsigned short a1) +vec_mtvscr (__vector __bool short a1) { - __builtin_altivec_mtvscr ((vector signed int) a1); + __builtin_altivec_mtvscr ((__vector signed int) a1); } inline void -vec_mtvscr (vector signed char a1) +vec_mtvscr (__vector __pixel a1) { - __builtin_altivec_mtvscr ((vector signed int) a1); + __builtin_altivec_mtvscr ((__vector signed int) a1); } inline void -vec_mtvscr (vector unsigned char a1) +vec_mtvscr (__vector signed char a1) { - __builtin_altivec_mtvscr ((vector signed int) 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) + +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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 float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __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) +inline __vector signed short +vec_nor (__vector signed short a1, __vector signed short a2) { - return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_nor (__vector unsigned short a1, __vector unsigned short a2) { - return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector __bool short +vec_nor (__vector __bool short a1, __vector __bool short a2) { - return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector signed char +vec_nor (__vector signed char a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed char) __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) +inline __vector unsigned char +vec_nor (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned 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) +inline __vector __bool char +vec_nor (__vector __bool char a1, __vector __bool char a2) { - return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) 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) +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 float) __builtin_altivec_vor ((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 float -vec_or (vector float a1, vector signed int a2) +inline __vector signed int +vec_or (__vector signed int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vor ((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 float -vec_or (vector signed int a1, vector float a2) +inline __vector signed int +vec_or (__vector signed int a1, __vector signed int a2) { - return (vector float) __builtin_altivec_vor ((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 signed int -vec_or (vector signed int a1, vector signed int a2) +inline __vector unsigned int +vec_or (__vector __bool int a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_or (vector signed int a1, vector unsigned 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); + 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 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); + 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) +inline __vector __bool short +vec_or (__vector __bool short a1, __vector __bool short a2) { - return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +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); + return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_or (vector signed short a1, vector unsigned short a2) +inline __vector signed short +vec_or (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_or (vector unsigned short a1, vector signed short a2) +inline __vector signed short +vec_or (__vector signed short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed 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) +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); + return (__vector unsigned short) __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) +inline __vector unsigned short +vec_or (__vector unsigned short a1, __vector __bool short a2) { - return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_or (vector signed char a1, vector unsigned char a2) +inline __vector unsigned short +vec_or (__vector unsigned short a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_or (vector unsigned char a1, vector signed char a2) +inline __vector signed char +vec_or (__vector __bool char a1, __vector signed char a2) { - return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed 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) +inline __vector __bool char +vec_or (__vector __bool char a1, __vector __bool char a2) { - return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) 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) +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); + 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) +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); + return (__vector unsigned 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) +inline __vector __bool char +vec_pack (__vector __bool short a1, __vector __bool short a2) { - return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned short -vec_pack (vector unsigned int a1, vector unsigned int a2) +inline __vector signed short +vec_pack (__vector signed int a1, __vector signed int a2) { - return (vector unsigned short) __builtin_altivec_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_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 signed short -vec_vpkuwum (vector signed int a1, vector signed int a2) +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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vpkuhum */ -inline vector signed char -vec_vpkuhum (vector signed short a1, vector signed short a2) +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); + 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) +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); + return (__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2); } /* vec_packpx */ -inline vector unsigned short -vec_packpx (vector unsigned int a1, vector unsigned int a2) +inline __vector __pixel +vec_packpx (__vector unsigned int a1, __vector unsigned int a2) { - return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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 float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); + return (__vector unsigned int) __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) +inline __vector __bool int +vec_perm (__vector __bool int a1, __vector __bool 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); + return (__vector __bool 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) +inline __vector signed short +vec_perm (__vector signed short a1, __vector signed short 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); + return (__vector signed short) __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) +inline __vector unsigned short +vec_perm (__vector unsigned short a1, __vector unsigned 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); + return (__vector unsigned 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) +inline __vector __bool short +vec_perm (__vector __bool short a1, __vector __bool 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); + return (__vector __bool short) __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) +inline __vector __pixel +vec_perm (__vector __pixel a1, __vector __pixel 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); + return (__vector __pixel) __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) +inline __vector signed char +vec_perm (__vector signed char a1, __vector signed 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); + 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) +inline __vector float +vec_re (__vector float a1) { - return (vector float) __builtin_altivec_vrefp ((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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +inline __vector float +vec_round (__vector float a1) { - return (vector float) __builtin_altivec_vrfin ((vector float) a1); + return (__vector float) __builtin_altivec_vrfin ((__vector float) a1); } /* vec_rsqrte */ -inline vector float -vec_rsqrte (vector float a1) +inline __vector float +vec_rsqrte (__vector float a1) { - return (vector float) __builtin_altivec_vrsqrtefp ((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 signed int a3) +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 float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); + return (__vector signed int) __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) +inline __vector signed int +vec_sel (__vector signed int a1, __vector signed int a2, __vector unsigned int a3) { - return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed 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 signed int a3) +inline __vector unsigned int +vec_sel (__vector unsigned int a1, __vector unsigned 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); + return (__vector unsigned 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) +inline __vector unsigned int +vec_sel (__vector unsigned int a1, __vector unsigned 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); + 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 signed int a3) +inline __vector __bool int +vec_sel (__vector __bool int a1, __vector __bool 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); + return (__vector __bool 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) +inline __vector __bool int +vec_sel (__vector __bool int a1, __vector __bool 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); + 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 signed short 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); + 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) +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); + 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 signed short 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); + 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) +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); + return (__vector unsigned 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 signed char a3) +inline __vector __bool short +vec_sel (__vector __bool short a1, __vector __bool short a2, __vector __bool short a3) { - return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) 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 unsigned char a3) +inline __vector __bool short +vec_sel (__vector __bool short a1, __vector __bool short a2, __vector unsigned short a3) { - return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); + return (__vector __bool short) __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 signed char a3) +inline __vector signed char +vec_sel (__vector signed char a1, __vector signed 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); + 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 unsigned char a3) +inline __vector signed char +vec_sel (__vector signed char a1, __vector signed 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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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 char a3) +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 float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); + return (__vector signed short) __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 char a3) +inline __vector unsigned short +vec_sld (__vector unsigned short a1, __vector unsigned short a2, const int a3) { - return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); + return (__vector unsigned short) __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 char a3) +inline __vector __bool short +vec_sld (__vector __bool short a1, __vector __bool short a2, const int a3) { - return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); + return (__vector __bool short) __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 char a3) +inline __vector __pixel +vec_sld (__vector __pixel a1, __vector __pixel a2, const int a3) { - return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); + return (__vector __pixel) __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 char a3) +inline __vector signed char +vec_sld (__vector signed char a1, __vector signed char a2, const int a3) { - return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); + return (__vector signed char) __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 char a3) +inline __vector unsigned char +vec_sld (__vector unsigned char a1, __vector unsigned char a2, const int a3) { - return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); + return (__vector unsigned 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 char a3) +inline __vector __bool char +vec_sld (__vector __bool char a1, __vector __bool char a2, const int a3) { - return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, 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) +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 signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector __bool int +vec_sll (__vector __bool int a1, __vector unsigned char a2) { - return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector signed short +vec_sll (__vector signed short a1, __vector unsigned int a2) { - return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector signed short +vec_sll (__vector signed short a1, __vector unsigned short a2) { - return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector signed short +vec_sll (__vector signed short a1, __vector unsigned char a2) { - return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_sll (__vector unsigned short a1, __vector unsigned int a2) { - return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector unsigned short +vec_sll (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned 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) +inline __vector unsigned short +vec_sll (__vector unsigned short a1, __vector unsigned char a2) { - return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned 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) +inline __vector __bool short +vec_sll (__vector __bool short a1, __vector unsigned int a2) { - return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector __bool short +vec_sll (__vector __bool short a1, __vector unsigned short a2) { - return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector __bool short +vec_sll (__vector __bool short a1, __vector unsigned char a2) { - return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool 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) +inline __vector __pixel +vec_sll (__vector __pixel a1, __vector unsigned int a2) { - return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) 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) +inline __vector __pixel +vec_sll (__vector __pixel a1, __vector unsigned short a2) { - return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) 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 short a2) +inline __vector __pixel +vec_sll (__vector __pixel a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) 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 char 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); + 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) +inline __vector signed char +vec_sll (__vector signed char a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) 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 short a2) +inline __vector signed char +vec_sll (__vector signed char a1, __vector unsigned char a2) { - return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) 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 char 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); + 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) +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); + 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) +inline __vector signed int +vec_slo (__vector signed int a1, __vector signed char a2) { - return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector unsigned int +vec_slo (__vector unsigned int a1, __vector signed char a2) { - return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector signed short +vec_slo (__vector signed short a1, __vector signed char a2) { - return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector unsigned short +vec_slo (__vector unsigned short a1, __vector signed char a2) { - return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector __pixel +vec_slo (__vector __pixel a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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) +inline __vector __pixel +vec_slo (__vector __pixel a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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 unsigned char 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); + 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) +inline __vector signed char +vec_slo (__vector signed char a1, __vector unsigned char a2) { - return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) 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 unsigned char 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); + 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 char a2) +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); + return (__vector signed char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); } -inline vector unsigned char -vec_splat (vector unsigned char a1, const char 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); + return (__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); } -inline vector signed short -vec_splat (vector signed short a1, const char a2) +inline __vector __bool char +vec_splat (__vector __bool char a1, const int a2) { - return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2); + return (__vector __bool char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); } -inline vector unsigned short -vec_splat (vector unsigned short a1, const char a2) +inline __vector signed short +vec_splat (__vector signed short a1, const int a2) { - return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); + return (__vector signed short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); } -inline vector float -vec_splat (vector float a1, const char a2) +inline __vector unsigned short +vec_splat (__vector unsigned short a1, const int a2) { - return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); + return (__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); } -inline vector signed int -vec_splat (vector signed int a1, const char a2) +inline __vector __bool short +vec_splat (__vector __bool short a1, const int a2) { - return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2); + return (__vector __bool short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); } -inline vector unsigned int -vec_splat (vector unsigned int a1, const char a2) +inline __vector __pixel +vec_splat (__vector __pixel a1, const int a2) { - return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, 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 char a2) +inline __vector float +vec_vspltw (__vector float a1, const int a2) { - return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); + return (__vector float) __builtin_altivec_vspltw ((__vector signed int) a1, a2); } -inline vector signed int -vec_vspltw (vector signed int a1, const char 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); + return (__vector signed int) __builtin_altivec_vspltw ((__vector signed int) a1, a2); } -inline vector unsigned int -vec_vspltw (vector unsigned int a1, const char 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); + 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 signed short -vec_vsplth (vector signed short a1, const char a2) +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); + return (__vector signed short) __builtin_altivec_vsplth ((__vector signed short) a1, a2); } -inline vector unsigned short -vec_vsplth (vector unsigned short a1, const char 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); + 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 char a2) +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); + return (__vector signed char) __builtin_altivec_vspltb ((__vector signed char) a1, a2); } -inline vector unsigned char -vec_vspltb (vector unsigned char a1, const char 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); + 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 char a1) +inline __vector signed char +vec_splat_s8 (const int a1) { - return (vector signed char) __builtin_altivec_vspltisb (a1); + return (__vector signed char) __builtin_altivec_vspltisb (a1); } /* vec_splat_s16 */ -inline vector signed short -vec_splat_s16 (const char a1) +inline __vector signed short +vec_splat_s16 (const int a1) { - return (vector signed short) __builtin_altivec_vspltish (a1); + return (__vector signed short) __builtin_altivec_vspltish (a1); } /* vec_splat_s32 */ -inline vector signed int -vec_splat_s32 (const char a1) +inline __vector signed int +vec_splat_s32 (const int a1) { - return (vector signed int) __builtin_altivec_vspltisw (a1); + return (__vector signed int) __builtin_altivec_vspltisw (a1); } /* vec_splat_u8 */ -inline vector unsigned char -vec_splat_u8 (const char a1) +inline __vector unsigned char +vec_splat_u8 (const int a1) { - return (vector unsigned char) __builtin_altivec_vspltisb (a1); + return (__vector unsigned char) __builtin_altivec_vspltisb (a1); } /* vec_splat_u16 */ -inline vector unsigned short -vec_splat_u16 (const char a1) +inline __vector unsigned short +vec_splat_u16 (const int a1) { - return (vector unsigned short) __builtin_altivec_vspltish (a1); + return (__vector unsigned short) __builtin_altivec_vspltish (a1); } /* vec_splat_u32 */ -inline vector unsigned int -vec_splat_u32 (const char a1) +inline __vector unsigned int +vec_splat_u32 (const int a1) { - return (vector unsigned int) __builtin_altivec_vspltisw (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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + return (__vector unsigned 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) +inline __vector __bool int +vec_srl (__vector __bool int a1, __vector unsigned int a2) { - return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) 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 short a2) +inline __vector __bool int +vec_srl (__vector __bool int a1, __vector unsigned short a2) { - return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) 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 char a2) +inline __vector __bool int +vec_srl (__vector __bool int a1, __vector unsigned char a2) { - return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __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) +inline __vector signed short +vec_srl (__vector signed short a1, __vector unsigned int a2) { - return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) 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 short a2) +inline __vector signed short +vec_srl (__vector signed short a1, __vector unsigned short a2) { - return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) 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 char a2) +inline __vector signed short +vec_srl (__vector signed short a1, __vector unsigned char a2) { - return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_srl (__vector unsigned short a1, __vector unsigned int a2) { - return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector unsigned short +vec_srl (__vector unsigned short a1, __vector unsigned short a2) { - return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector unsigned short +vec_srl (__vector unsigned short a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector __bool short +vec_srl (__vector __bool short a1, __vector unsigned int a2) { - return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool short) __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) +inline __vector __bool short +vec_srl (__vector __bool short a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool short) __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) +inline __vector __bool short +vec_srl (__vector __bool short a1, __vector unsigned char a2) { - return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) 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) +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); + 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) +inline __vector signed int +vec_sro (__vector signed int a1, __vector signed char a2) { - return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector unsigned int +vec_sro (__vector unsigned int a1, __vector signed char a2) { - return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector signed short +vec_sro (__vector signed short a1, __vector signed char a2) { - return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector unsigned short +vec_sro (__vector unsigned short a1, __vector signed char a2) { - return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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 signed char 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); + 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) +inline __vector __pixel +vec_sro (__vector __pixel a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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) +inline __vector __pixel +vec_sro (__vector __pixel a1, __vector unsigned char a2) { - return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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 unsigned char 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); + 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) +inline __vector signed char +vec_sro (__vector signed char a1, __vector unsigned char a2) { - return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) 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 unsigned char 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); + 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, void *a3) +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); + __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_st (vector signed int a1, int a2, void *a3) +vec_st (__vector signed short a1, int a2, __vector signed short *a3) { - __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_st (vector unsigned int a1, int a2, void *a3) +vec_st (__vector signed short a1, int a2, short *a3) { - __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_st (vector signed short a1, int a2, void *a3) +vec_st (__vector unsigned short a1, int a2, __vector unsigned short *a3) { - __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_st (vector unsigned short a1, int a2, void *a3) +vec_st (__vector unsigned short a1, int a2, unsigned short *a3) { - __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_st (vector signed char a1, int a2, void *a3) +vec_st (__vector __bool short a1, int a2, __vector __bool short *a3) { - __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_st (vector unsigned char a1, int a2, void *a3) +vec_st (__vector __bool short a1, int a2, unsigned short *a3) { - __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) 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, void *a3) +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_stvebx ((vector signed char) a1, a2, (void *) a3); + __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); } inline void -vec_ste (vector unsigned char a1, int a2, void *a3) +vec_ste (__vector __bool short a1, int a2, unsigned short *a3) { - __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); + __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); } inline void -vec_ste (vector signed short a1, int a2, void *a3) +vec_ste (__vector __pixel a1, int a2, short *a3) { - __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); + __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); } inline void -vec_ste (vector unsigned short a1, int a2, void *a3) +vec_ste (__vector __pixel a1, int a2, unsigned short *a3) { - __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); + __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); } inline void -vec_ste (vector float a1, int a2, void *a3) +vec_ste (__vector float a1, int a2, float *a3) { - __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_ste (vector signed int a1, int a2, void *a3) +vec_ste (__vector signed int a1, int a2, int *a3) { - __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_ste (vector unsigned int a1, int a2, void *a3) +vec_ste (__vector unsigned int a1, int a2, unsigned int *a3) { - __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) 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, void *a3) +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); + __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stvewx (vector signed int a1, int a2, void *a3) +vec_stvewx (__vector unsigned int a1, int a2, unsigned int *a3) { - __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stvewx (vector unsigned int a1, int a2, void *a3) +vec_stvewx (__vector __bool int a1, int a2, int *a3) { - __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) 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, void *a3) +vec_stvehx (__vector signed short a1, int a2, short *a3) { - __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); + __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3); } inline void -vec_stvehx (vector unsigned short a1, int a2, void *a3) +vec_stvehx (__vector unsigned short a1, int a2, unsigned short *a3) { - __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) 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, void *a3) +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); + __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); } inline void -vec_stvebx (vector unsigned char a1, int a2, void *a3) +vec_stvebx (__vector __bool char a1, int a2, unsigned char *a3) { - __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); + __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3); } /* vec_stl */ inline void -vec_stl (vector float a1, int a2, void *a3) +vec_stl (__vector float a1, int a2, __vector float *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector signed int a1, int a2, void *a3) +vec_stl (__vector float a1, int a2, float *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector unsigned int a1, int a2, void *a3) +vec_stl (__vector signed int a1, int a2, __vector signed int *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector signed short a1, int a2, void *a3) +vec_stl (__vector signed int a1, int a2, int *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector unsigned short a1, int a2, void *a3) +vec_stl (__vector unsigned int a1, int a2, __vector unsigned int *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector signed char a1, int a2, void *a3) +vec_stl (__vector unsigned int a1, int a2, unsigned int *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); + __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector unsigned char a1, int a2, void *a3) +vec_stl (__vector __bool int a1, int a2, __vector __bool int *a3) { - __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) 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 signed char a1, vector signed char a2) +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); + return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned char -vec_sub (vector signed char a1, vector unsigned char a2) +inline __vector signed char +vec_sub (__vector signed char a1, __vector signed char a2) { - return (vector unsigned char) __builtin_altivec_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_sub (vector unsigned 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); + 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) +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); + return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); } -inline vector signed short -vec_sub (vector signed short a1, vector signed short a2) +inline __vector unsigned char +vec_sub (__vector unsigned char a1, __vector unsigned char a2) { - return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_sub (vector signed short a1, vector unsigned short a2) +inline __vector signed short +vec_sub (__vector __bool short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_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_sub (vector unsigned short a1, vector signed short a2) +inline __vector signed short +vec_sub (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned short) __builtin_altivec_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_sub (vector unsigned short a1, vector unsigned short a2) +inline __vector signed short +vec_sub (__vector signed short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_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 signed int -vec_sub (vector signed int a1, vector signed int a2) +inline __vector unsigned short +vec_sub (__vector __bool short a1, __vector unsigned short a2) { - return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_sub (vector signed int a1, vector unsigned int a2) +inline __vector unsigned short +vec_sub (__vector unsigned short a1, __vector __bool short a2) { - return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_sub (vector unsigned int a1, vector signed int a2) +inline __vector unsigned short +vec_sub (__vector unsigned short a1, __vector unsigned short a2) { - return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_sub (vector unsigned int a1, vector unsigned int a2) +inline __vector signed int +vec_sub (__vector __bool int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_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 float -vec_sub (vector float a1, vector float a2) +inline __vector signed int +vec_sub (__vector signed int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) 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) +inline __vector float +vec_vsubfp (__vector float a1, __vector float a2) { - return (vector float) __builtin_altivec_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 signed int a1, vector signed int a2) +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); + return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_vsubuwm (vector signed int a1, vector unsigned int a2) +inline __vector signed int +vec_vsubuwm (__vector signed int a1, __vector __bool int a2) { - return (vector unsigned int) __builtin_altivec_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 unsigned int a1, vector signed int a2) +inline __vector signed int +vec_vsubuwm (__vector signed int a1, __vector signed int a2) { - return (vector unsigned int) __builtin_altivec_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 unsigned int a1, vector unsigned 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); + 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 signed short a1, vector signed short a2) +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); + return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned short -vec_vsubuhm (vector signed short a1, vector unsigned 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); + 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 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vsububm */ -inline vector signed char -vec_vsububm (vector signed char a1, vector signed char a2) +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); + return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned char -vec_vsububm (vector signed char a1, vector unsigned 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); + 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 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); + 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) +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); + 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) +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); + return (__vector unsigned int) __builtin_altivec_vsubcuw ((__vector signed int) a1, (__vector signed int) a2); } /* vec_subs */ -inline vector unsigned char -vec_subs (vector signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +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); + return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2); } -inline vector signed char -vec_subs (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); + return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_subs (vector signed short a1, vector unsigned short a2) +inline __vector signed char +vec_subs (__vector signed char a1, __vector __bool char a2) { - return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); + return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_subs (vector unsigned short a1, vector signed short a2) +inline __vector signed char +vec_subs (__vector signed char a1, __vector signed char a2) { - return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); + return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2); } -inline vector unsigned short -vec_subs (vector unsigned short a1, vector unsigned short 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); + return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed short -vec_subs (vector signed short a1, vector signed short a2) +inline __vector unsigned short +vec_subs (__vector unsigned short a1, __vector __bool short a2) { - return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); + return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_subs (vector signed int a1, vector unsigned int a2) +inline __vector unsigned short +vec_subs (__vector unsigned short a1, __vector unsigned short a2) { - return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_subs (vector unsigned int a1, vector signed int a2) +inline __vector signed short +vec_subs (__vector __bool short a1, __vector signed short a2) { - return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector unsigned int -vec_subs (vector unsigned int a1, vector unsigned int a2) +inline __vector signed short +vec_subs (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); } -inline vector signed int -vec_subs (vector signed int a1, vector signed int a2) +inline __vector signed short +vec_subs (__vector signed short a1, __vector signed short a2) { - return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) 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 signed int a1, vector signed int a2) +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); + return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vsubuws */ -inline vector unsigned int -vec_vsubuws (vector signed int a1, vector unsigned int a2) +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); + 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 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); + 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) +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); + return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2); } /* vec_vsubshs */ -inline vector signed short -vec_vsubshs (vector signed short a1, vector signed short a2) +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); + return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vsubuhs */ -inline vector unsigned short -vec_vsubuhs (vector signed short a1, vector unsigned short a2) +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); + 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 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); + 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) +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); + return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2); } /* vec_vsubsbs */ -inline vector signed char -vec_vsubsbs (vector signed char a1, vector signed char a2) +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); + 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 signed char a1, vector unsigned char a2) +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); + 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 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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + return (__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) a1, (__vector signed int) a2); } /* vec_vsum4shs */ -inline vector signed int -vec_vsum4shss (vector signed short a1, vector signed int a2) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +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); + 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) +inline __vector float +vec_trunc (__vector float a1) { - return (vector float) __builtin_altivec_vrfiz ((vector float) a1); + return (__vector float) __builtin_altivec_vrfiz ((__vector float) a1); } /* vec_unpackh */ -inline vector signed short -vec_unpackh (vector signed char a1) +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 signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); + return (__vector __bool short) __builtin_altivec_vupkhsb ((__vector signed char) a1); } -inline vector signed int -vec_unpackh (vector signed short a1) +inline __vector signed int +vec_unpackh (__vector signed short a1) { - return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); + return (__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) a1); } -inline vector unsigned int -vec_unpackh (vector unsigned short a1) +inline __vector __bool int +vec_unpackh (__vector __bool short a1) { - return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed 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 signed int -vec_vupkhsh (vector signed short a1) +inline __vector __bool int +vec_vupkhsh (__vector __bool short a1) { - return (vector signed int) __builtin_altivec_vupkhsh ((vector signed 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 unsigned short a1) +inline __vector unsigned int +vec_vupkhpx (__vector __pixel a1) { - return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1); + return (__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) a1); } /* vec_vupkhsb */ -inline vector signed short -vec_vupkhsb (vector signed char a1) +inline __vector __bool short +vec_vupkhsb (__vector __bool char a1) { - return (vector signed short) __builtin_altivec_vupkhsb ((vector signed 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) +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 signed short) __builtin_altivec_vupklsb ((vector signed char) a1); + return (__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) a1); } -inline vector unsigned int -vec_unpackl (vector unsigned short a1) +inline __vector signed int +vec_unpackl (__vector signed short a1) { - return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1); + return (__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) a1); } -inline vector signed int -vec_unpackl (vector signed short a1) +inline __vector __bool int +vec_unpackl (__vector __bool short a1) { - return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); + return (__vector __bool int) __builtin_altivec_vupklsh ((__vector signed short) a1); } /* vec_vupklpx */ -inline vector unsigned int -vec_vupklpx (vector unsigned short a1) +inline __vector unsigned int +vec_vupklpx (__vector __pixel a1) { - return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1); + return (__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) a1); } /* vec_upklsh */ -inline vector signed int -vec_vupklsh (vector signed short a1) +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); + return (__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) a1); } /* vec_vupklsb */ -inline vector signed short -vec_vupklsb (vector signed char a1) +inline __vector __bool short +vec_vupklsb (__vector __bool char a1) { - return (vector signed short) __builtin_altivec_vupklsb ((vector signed 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) +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 float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector float -vec_xor (vector float a1, vector signed int a2) +inline __vector signed int +vec_xor (__vector __bool int a1, __vector signed int a2) { - return (vector float) __builtin_altivec_vxor ((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 float -vec_xor (vector signed int a1, vector float a2) +inline __vector signed int +vec_xor (__vector signed int a1, __vector __bool int a2) { - return (vector float) __builtin_altivec_vxor ((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 signed int -vec_xor (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); + return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned int -vec_xor (vector signed int a1, vector unsigned 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); + 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 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); + 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) +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); + return (__vector unsigned int) __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) +inline __vector __bool short +vec_xor (__vector __bool short a1, __vector __bool short a2) { - return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector __bool short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_xor (vector signed short a1, vector unsigned short a2) +inline __vector signed short +vec_xor (__vector __bool short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned short -vec_xor (vector unsigned short a1, vector signed short a2) +inline __vector signed short +vec_xor (__vector signed short a1, __vector __bool short a2) { - return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed 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) +inline __vector signed short +vec_xor (__vector signed short a1, __vector signed short a2) { - return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector signed short) __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) +inline __vector unsigned short +vec_xor (__vector __bool short a1, __vector unsigned short a2) { - return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_xor (vector signed char a1, vector unsigned char a2) +inline __vector unsigned short +vec_xor (__vector unsigned short a1, __vector __bool short a2) { - return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2); } -inline vector unsigned char -vec_xor (vector unsigned char a1, vector signed char a2) +inline __vector unsigned short +vec_xor (__vector unsigned short a1, __vector unsigned short a2) { - return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); + return (__vector unsigned short) __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) +inline __vector signed char +vec_xor (__vector __bool char a1, __vector signed char a2) { - return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) 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 unsigned char a2) +vec_all_eq (__vector signed char a1, __vector __bool char a2) { - return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed 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) +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 signed char a2) +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); + 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) +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); + 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 unsigned short a2) +vec_all_eq (__vector __bool char a1, __vector unsigned char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) 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 signed short a2) +vec_all_eq (__vector __bool char a1, __vector signed char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_all_eq (vector unsigned short a1, vector signed short a2) +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); + 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) +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); + 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 unsigned int a2) +vec_all_eq (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) 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 signed int a2) +vec_all_eq (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_eq (vector unsigned int a1, vector signed int a2) +vec_all_eq (__vector __bool short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_eq (vector unsigned int a1, vector unsigned int a2) +vec_all_eq (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_eq (vector float a1, vector float a2) +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); } @@ -5064,79 +6846,115 @@ vec_all_eq (vector float a1, vector float a2) /* vec_all_ge */ inline int -vec_all_ge (vector signed char a1, vector unsigned char a2) +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_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1); } inline int -vec_all_ge (vector unsigned char a1, vector signed char a2) +vec_all_ge (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_ge (vector unsigned char a1, vector unsigned char a2) +vec_all_ge (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_ge (vector signed char a1, vector signed char a2) +vec_all_ge (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); + 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 unsigned short a2) +vec_all_ge (__vector signed short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_ge (vector unsigned short a1, vector signed short a2) +vec_all_ge (__vector __bool short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_ge (vector unsigned short a1, vector unsigned short a2) +vec_all_ge (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); + 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 signed short a2) +vec_all_ge (__vector __bool int a1, __vector unsigned int a2) { - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1); } inline int -vec_all_ge (vector signed int a1, vector unsigned int a2) +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); + 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 signed int a2) +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); + 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) +vec_all_ge (__vector __bool int a1, __vector signed int a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); + 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) +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); + 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) +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); } @@ -5144,79 +6962,115 @@ vec_all_ge (vector float a1, vector float a2) /* vec_all_gt */ inline int -vec_all_gt (vector signed char a1, vector unsigned char a2) +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); + 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 signed char a2) +vec_all_gt (__vector __bool char a1, __vector signed char a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (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 unsigned char a1, vector unsigned char a2) +vec_all_gt (__vector signed char a1, __vector __bool char a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (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 signed char a1, vector signed char a2) +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); + return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_all_gt (vector signed short a1, vector unsigned short a2) +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); + 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 signed short a2) +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); + 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) +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); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_gt (vector signed short a1, vector signed short a2) +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); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_gt (vector signed int a1, vector unsigned int a2) +vec_all_gt (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_gt (vector unsigned int a1, vector signed int a2) +vec_all_gt (__vector signed short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_gt (vector unsigned int a1, vector unsigned int a2) +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); + return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); } inline int -vec_all_gt (vector signed int a1, vector signed int a2) +vec_all_gt (__vector unsigned int a1, __vector __bool int a2) { - return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2); } inline int -vec_all_gt (vector float a1, vector float a2) +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); } @@ -5224,7 +7078,7 @@ vec_all_gt (vector float a1, vector float a2) /* vec_all_in */ inline int -vec_all_in (vector float a1, vector float a2) +vec_all_in (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2); } @@ -5232,79 +7086,115 @@ vec_all_in (vector float a1, vector float a2) /* vec_all_le */ inline int -vec_all_le (vector signed char a1, vector unsigned char a2) +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_vcmpgtub_p (__CR6_EQ, (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 unsigned char a1, vector signed char a2) +vec_all_le (__vector signed char a1, __vector __bool char a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (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 unsigned char a1, vector unsigned char a2) +vec_all_le (__vector signed char a1, __vector signed char a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (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 signed char a1, vector signed char a2) +vec_all_le (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_le (vector signed short a1, vector unsigned short a2) +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); + 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 signed short a2) +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); + 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) +vec_all_le (__vector __bool short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (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 signed short a1, vector signed short a2) +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); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_le (vector signed int a1, vector unsigned int a2) +vec_all_le (__vector signed short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_le (vector unsigned int a1, vector signed int a2) +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); + 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) +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); + return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); } inline int -vec_all_le (vector signed int a1, vector signed int a2) +vec_all_le (__vector unsigned int a1, __vector unsigned int a2) { - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2); } inline int -vec_all_le (vector float a1, vector float a2) +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); } @@ -5312,79 +7202,115 @@ vec_all_le (vector float a1, vector float a2) /* vec_all_lt */ inline int -vec_all_lt (vector signed char a1, vector unsigned char a2) +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_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); } inline int -vec_all_lt (vector unsigned char a1, vector signed char a2) +vec_all_lt (__vector signed char a1, __vector signed char a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1); } inline int -vec_all_lt (vector unsigned char a1, vector unsigned char a2) +vec_all_lt (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_lt (vector signed char a1, vector signed char a2) +vec_all_lt (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_lt (vector signed short a1, vector unsigned short a2) +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); + 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 signed short a2) +vec_all_lt (__vector __bool short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_lt (vector unsigned short a1, vector unsigned short a2) +vec_all_lt (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); + 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) +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); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_all_lt (vector signed int a1, vector unsigned int a2) +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); + 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 signed int a2) +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); + 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) +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); + return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1); } inline int -vec_all_lt (vector signed int a1, vector signed int a2) +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); + 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) +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); } @@ -5392,7 +7318,7 @@ vec_all_lt (vector float a1, vector float a2) /* vec_all_nan */ inline int -vec_all_nan (vector float a1) +vec_all_nan (__vector float a1) { return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); } @@ -5400,79 +7326,139 @@ vec_all_nan (vector float a1) /* vec_all_ne */ inline int -vec_all_ne (vector signed char a1, vector unsigned char a2) +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); + 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) +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); + 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 signed char a2) +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); + 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) +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); + 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 unsigned short a2) +vec_all_ne (__vector __bool char a1, __vector unsigned char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) 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 signed short a2) +vec_all_ne (__vector __bool char a1, __vector signed char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_all_ne (vector unsigned short a1, vector signed short a2) +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); + 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) +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); + 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 unsigned int a2) +vec_all_ne (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) 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 signed int a2) +vec_all_ne (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_ne (vector unsigned int a1, vector signed int a2) +vec_all_ne (__vector __bool short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_ne (vector unsigned int a1, vector unsigned int a2) +vec_all_ne (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_all_ne (vector float a1, vector float a2) +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); } @@ -5480,7 +7466,7 @@ vec_all_ne (vector float a1, vector float a2) /* vec_all_nge */ inline int -vec_all_nge (vector float a1, vector float a2) +vec_all_nge (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); } @@ -5488,7 +7474,7 @@ vec_all_nge (vector float a1, vector float a2) /* vec_all_ngt */ inline int -vec_all_ngt (vector float a1, vector float a2) +vec_all_ngt (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2); } @@ -5496,7 +7482,7 @@ vec_all_ngt (vector float a1, vector float a2) /* vec_all_nle */ inline int -vec_all_nle (vector float a1, vector float a2) +vec_all_nle (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1); } @@ -5504,7 +7490,7 @@ vec_all_nle (vector float a1, vector float a2) /* vec_all_nlt */ inline int -vec_all_nlt (vector float a1, vector float a2) +vec_all_nlt (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1); } @@ -5512,7 +7498,7 @@ vec_all_nlt (vector float a1, vector float a2) /* vec_all_numeric */ inline int -vec_all_numeric (vector float a1) +vec_all_numeric (__vector float a1) { return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1); } @@ -5520,79 +7506,139 @@ vec_all_numeric (vector float a1) /* vec_any_eq */ inline int -vec_any_eq (vector signed char a1, vector unsigned char a2) +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); + 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) +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); + 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 signed char a2) +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); + 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) +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); + 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 unsigned short a2) +vec_any_eq (__vector __bool char a1, __vector unsigned char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) 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 signed short a2) +vec_any_eq (__vector __bool char a1, __vector signed char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_any_eq (vector unsigned short a1, vector signed short a2) +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); + 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) +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); + 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 unsigned int a2) +vec_any_eq (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) 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 signed int a2) +vec_any_eq (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_eq (vector unsigned int a1, vector signed int a2) +vec_any_eq (__vector __bool short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_eq (vector unsigned int a1, vector unsigned int a2) +vec_any_eq (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_eq (vector float a1, vector float a2) +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); } @@ -5600,79 +7646,115 @@ vec_any_eq (vector float a1, vector float a2) /* vec_any_ge */ inline int -vec_any_ge (vector signed char a1, vector unsigned char a2) +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); + 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 signed char a2) +vec_any_ge (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_any_ge (vector unsigned char a1, vector unsigned char a2) +vec_any_ge (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_any_ge (vector signed char a1, vector signed char a2) +vec_any_ge (__vector signed short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); + 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 unsigned short a2) +vec_any_ge (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_any_ge (vector unsigned short a1, vector signed short a2) +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); + 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) +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); + 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) +vec_any_ge (__vector signed int a1, __vector __bool int a2) { - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); + 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 unsigned int a2) +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); + 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 signed int a2) +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); + 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) +vec_any_ge (__vector signed int a1, __vector signed int a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); + return __builtin_altivec_vcmpgtsw_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) +vec_any_ge (__vector __bool int a1, __vector unsigned int a2) { - return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); + 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) +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); } @@ -5680,79 +7762,115 @@ vec_any_ge (vector float a1, vector float a2) /* vec_any_gt */ inline int -vec_any_gt (vector signed char a1, vector unsigned char a2) +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); + 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 signed char a2) +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); + 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) +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); + return __builtin_altivec_vcmpgtub_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) +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); + return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_any_gt (vector signed short a1, vector unsigned short a2) +vec_any_gt (__vector signed char a1, __vector __bool char a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_any_gt (vector unsigned short a1, vector signed short a2) +vec_any_gt (__vector signed char a1, __vector signed char a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_any_gt (vector unsigned short a1, vector unsigned short a2) +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); + return __builtin_altivec_vcmpgtuh_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) +vec_any_gt (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_gt (vector signed int a1, vector unsigned int a2) +vec_any_gt (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_gt (vector unsigned int a1, vector signed int a2) +vec_any_gt (__vector __bool short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_gt (vector unsigned int a1, vector unsigned int a2) +vec_any_gt (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_gt (vector signed int a1, vector signed int a2) +vec_any_gt (__vector signed short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_gt (vector float a1, vector float a2) +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); } @@ -5760,79 +7878,115 @@ vec_any_gt (vector float a1, vector float a2) /* vec_any_le */ inline int -vec_any_le (vector signed char a1, vector unsigned char a2) +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_vcmpgtub_p (__CR6_LT_REV, (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 unsigned char a1, vector signed char a2) +vec_any_le (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_le (vector unsigned char a1, vector unsigned char a2) +vec_any_le (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_le (vector signed char a1, vector signed char a2) +vec_any_le (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); + return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_le (vector signed short a1, vector unsigned short a2) +vec_any_le (__vector __bool short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (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 unsigned short a1, vector signed short a2) +vec_any_le (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (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 unsigned short a1, vector unsigned short a2) +vec_any_le (__vector signed short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (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 signed short a1, vector signed short a2) +vec_any_le (__vector __bool int a1, __vector unsigned int a2) { - return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2); } inline int -vec_any_le (vector signed int a1, vector unsigned int a2) +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); + 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 signed int a2) +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); + 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) +vec_any_le (__vector __bool int a1, __vector signed int a2) { - return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (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 signed int a1, vector signed int a2) +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); + 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) +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); } @@ -5840,79 +7994,115 @@ vec_any_le (vector float a1, vector float a2) /* vec_any_lt */ inline int -vec_any_lt (vector signed char a1, vector unsigned char a2) +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_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1); } inline int -vec_any_lt (vector unsigned char a1, vector signed char a2) +vec_any_lt (__vector signed char a1, __vector signed char a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtsb_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) +vec_any_lt (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_any_lt (vector signed char a1, vector signed char a2) +vec_any_lt (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); + return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_any_lt (vector signed short a1, vector unsigned short a2) +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); + 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 signed short a2) +vec_any_lt (__vector __bool short a1, __vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtsh_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) +vec_any_lt (__vector signed short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); + 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) +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); + return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1); } inline int -vec_any_lt (vector signed int a1, vector unsigned int a2) +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); + 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 signed int a2) +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); + 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) +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); + return __builtin_altivec_vcmpgtuw_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) +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); + 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) +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); } @@ -5920,7 +8110,7 @@ vec_any_lt (vector float a1, vector float a2) /* vec_any_nan */ inline int -vec_any_nan (vector float a1) +vec_any_nan (__vector float a1) { return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1); } @@ -5928,79 +8118,139 @@ vec_any_nan (vector float a1) /* vec_any_ne */ inline int -vec_any_ne (vector signed char a1, vector unsigned char a2) +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); + 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) +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); + 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 signed char a2) +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); + 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) +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); + 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 unsigned short a2) +vec_any_ne (__vector __bool char a1, __vector unsigned char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) 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 signed short a2) +vec_any_ne (__vector __bool char a1, __vector signed char a2) { - return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); + return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2); } inline int -vec_any_ne (vector unsigned short a1, vector signed short a2) +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); + 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) +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); + 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 unsigned int a2) +vec_any_ne (__vector unsigned short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) 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 signed int a2) +vec_any_ne (__vector unsigned short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_ne (vector unsigned int a1, vector signed int a2) +vec_any_ne (__vector __bool short a1, __vector __bool short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_ne (vector unsigned int a1, vector unsigned int a2) +vec_any_ne (__vector __bool short a1, __vector unsigned short a2) { - return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); + return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2); } inline int -vec_any_ne (vector float a1, vector float a2) +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); } @@ -6008,7 +8258,7 @@ vec_any_ne (vector float a1, vector float a2) /* vec_any_nge */ inline int -vec_any_nge (vector float a1, vector float a2) +vec_any_nge (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2); } @@ -6016,7 +8266,7 @@ vec_any_nge (vector float a1, vector float a2) /* vec_any_ngt */ inline int -vec_any_ngt (vector float a1, vector float a2) +vec_any_ngt (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2); } @@ -6024,7 +8274,7 @@ vec_any_ngt (vector float a1, vector float a2) /* vec_any_nle */ inline int -vec_any_nle (vector float a1, vector float a2) +vec_any_nle (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); } @@ -6032,7 +8282,7 @@ vec_any_nle (vector float a1, vector float a2) /* vec_any_nlt */ inline int -vec_any_nlt (vector float a1, vector float a2) +vec_any_nlt (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1); } @@ -6040,7 +8290,7 @@ vec_any_nlt (vector float a1, vector float a2) /* vec_any_numeric */ inline int -vec_any_numeric (vector float a1) +vec_any_numeric (__vector float a1) { return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1); } @@ -6048,2480 +8298,3208 @@ vec_any_numeric (vector float a1) /* vec_any_out */ inline int -vec_any_out (vector float a1, vector float a2) +vec_any_out (__vector float a1, __vector float a2) { return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2); } -/* 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; -}; +} /* extern "C++" */ -template<> -struct __vec_step_help<vector unsigned short> -{ - 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<vector unsigned int> -{ - static const int _S_elem = 4; -}; +#else /* not C++ */ -template<> -struct __vec_step_help<vector unsigned char> -{ - static const int _S_elem = 16; -}; +/* "... and so I think no man in a century will suffer as greatly as + you will." */ -template<> -struct __vec_step_help<vector signed char> -{ - static const int _S_elem = 16; -}; +/* Helper macros. */ -template<> -struct __vec_step_help<vector float> -{ - static const int _S_elem = 4; -}; +#define __un_args_eq(xtype, x) \ + __builtin_types_compatible_p (xtype, typeof (x)) -#define vec_step(t) __vec_step_help<typeof(t)>::_S_elem +#define __bin_args_eq(xtype, x, ytype, y) \ + (__builtin_types_compatible_p (xtype, typeof (x)) \ + && __builtin_types_compatible_p (ytype, typeof (y))) -}//extern "C++" +#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))) -#else /* not C++ */ +#define __ch(x, y, z) __builtin_choose_expr (x, y, z) -/* "... and so I think no man in a century will suffer as greatly as - you will." */ +#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))), \ - __altivec_link_error_invalid_argument ())))) + __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))), \ - __altivec_link_error_invalid_argument ()))) - -#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 signed short), 8, \ - __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 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 float), 4, \ - __altivec_link_error_invalid_argument ()))))))) + __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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ())))) +__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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ())))) +__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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ())))) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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 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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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 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 signed 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 signed 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 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 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 signed 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 signed int, (a1), vector signed int, (a2)), \ - ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ())))))))))))) +__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 signed int, (a1), vector signed int, (a2)), \ - ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))) +__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 signed short, (a1), vector signed short, (a2)), \ - ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))) +__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 signed char, (a1), vector signed char, (a2)), \ - ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))) +__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 signed int, (a2)), \ - ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ - ((vector float) __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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))))))))))))))) +__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 unsigned int, (a2)), \ - ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \ - ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector signed int, (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 signed int, (a2)), \ - ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector signed 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 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 unsigned int, (a1), vector signed 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 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 signed 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 signed 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 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 signed 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 signed 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 unsigned 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 signed 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 signed 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 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 unsigned char, (a1), vector signed char, (a2)), \ - ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ()))))))))))))))))))))))) +__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))), \ - __altivec_link_error_invalid_argument ())))))) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ()) +__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) __builtin_altivec_vrfip ((a1)) +#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) __builtin_altivec_vcmpbfp ((a1), (a2)) +#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 signed 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 signed 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 signed 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 signed 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 signed 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 signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ - ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ - __altivec_link_error_invalid_argument ()))))))) +__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 signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed 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 signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ())) +__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 signed 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 signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ - __altivec_link_error_invalid_argument ())) +__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 signed 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 signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ - __altivec_link_error_invalid_argument ())) +__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) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2)) +#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 signed 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 signed 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 signed 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 signed 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 signed 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 signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ - ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ - __altivec_link_error_invalid_argument ()))))))) +__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 signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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 signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ - __altivec_link_error_invalid_argument ()) +__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) __builtin_altivec_vcmpgefp ((a2), (a1)) +#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 signed 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 signed 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 signed 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 signed 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 signed 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 signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ - ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ - __altivec_link_error_invalid_argument ()))))))) +__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 (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \ - ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ -__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \ - ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ -__ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \ - ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ -__ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \ - ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ - __altivec_link_error_invalid_argument ())))) +__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 (__bin_args_eq (vector signed int, (a1), int, (a2)), \ - ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ -__ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \ - ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ - __altivec_link_error_invalid_argument ())) +__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 (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \ - ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ -__ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \ - ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ - __altivec_link_error_invalid_argument ())) +__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) __builtin_altivec_vctsxs ((a1), (a2)) +#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) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2)) +#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 ((a1)) +#define vec_dss(a1) __builtin_altivec_dss ((const int) (a1)); #define vec_dssall() __builtin_altivec_dssall () #define vec_dst(a1, a2, a3) \ -__ch (__un_args_eq (vector unsigned char, *(a1)), \ +__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 (vector signed char, *(a1)), \ +__ch (__un_args_eq (const __vector __bool char, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned short, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed short, *(a1)), \ +__ch (__un_args_eq (const __vector signed short, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned int, *(a1)), \ +__ch (__un_args_eq (const __vector __bool short, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed int, *(a1)), \ +__ch (__un_args_eq (const __vector __pixel, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector float, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned char, *(a1)), \ +__ch (__un_args_eq (const __vector signed int, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed char, *(a1)), \ +__ch (__un_args_eq (const __vector __bool int, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned short, *(a1)), \ +__ch (__un_args_eq (const __vector float, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed short, *(a1)), \ +__ch (__un_args_eq (const unsigned char, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned int, *(a1)), \ +__ch (__un_args_eq (const signed char, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed int, *(a1)), \ +__ch (__un_args_eq (const unsigned short, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned long, *(a1)), \ +__ch (__un_args_eq (const short, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed long, *(a1)), \ +__ch (__un_args_eq (const unsigned int, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (float, *(a1)), \ +__ch (__un_args_eq (const int, *(a1)), \ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \ - __altivec_link_error_invalid_argument ())))))))))))))))) +__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 (vector unsigned char, *(a1)), \ +__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 (vector signed char, *(a1)), \ +__ch (__un_args_eq (const __vector signed short, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned short, *(a1)), \ +__ch (__un_args_eq (const __vector __bool short, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed short, *(a1)), \ +__ch (__un_args_eq (const __vector __pixel, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned int, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed int, *(a1)), \ +__ch (__un_args_eq (const __vector signed int, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector float, *(a1)), \ +__ch (__un_args_eq (const __vector __bool int, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned char, *(a1)), \ +__ch (__un_args_eq (const __vector float, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed char, *(a1)), \ +__ch (__un_args_eq (const unsigned char, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned short, *(a1)), \ +__ch (__un_args_eq (const signed char, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed short, *(a1)), \ +__ch (__un_args_eq (const unsigned short, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned int, *(a1)), \ +__ch (__un_args_eq (const short, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed int, *(a1)), \ +__ch (__un_args_eq (const unsigned int, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned long, *(a1)), \ +__ch (__un_args_eq (const int, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed long, *(a1)), \ +__ch (__un_args_eq (const unsigned long, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (float, *(a1)), \ +__ch (__un_args_eq (const long, *(a1)), \ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \ - __altivec_link_error_invalid_argument ())))))))))))))))) +__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 (vector unsigned char, *(a1)), \ +__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 (vector signed char, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned short, *(a1)), \ +__ch (__un_args_eq (const __vector signed short, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed short, *(a1)), \ +__ch (__un_args_eq (const __vector __bool short, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned int, *(a1)), \ +__ch (__un_args_eq (const __vector __pixel, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed int, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector float, *(a1)), \ +__ch (__un_args_eq (const __vector signed int, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned char, *(a1)), \ +__ch (__un_args_eq (const __vector __bool int, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed char, *(a1)), \ +__ch (__un_args_eq (const __vector float, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned short, *(a1)), \ +__ch (__un_args_eq (const unsigned char, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed short, *(a1)), \ +__ch (__un_args_eq (const signed char, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned int, *(a1)), \ +__ch (__un_args_eq (const unsigned short, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed int, *(a1)), \ +__ch (__un_args_eq (const short, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned long, *(a1)), \ +__ch (__un_args_eq (const unsigned int, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed long, *(a1)), \ +__ch (__un_args_eq (const int, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (float, *(a1)), \ +__ch (__un_args_eq (const unsigned long, *(a1)), \ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \ - __altivec_link_error_invalid_argument ())))))))))))))))) +__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 (vector unsigned char, *(a1)), \ +__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 (vector signed char, *(a1)), \ +__ch (__un_args_eq (const __vector __bool char, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned short, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned short, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed short, *(a1)), \ +__ch (__un_args_eq (const __vector signed short, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector unsigned int, *(a1)), \ +__ch (__un_args_eq (const __vector __bool short, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector signed int, *(a1)), \ +__ch (__un_args_eq (const __vector __pixel, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (vector float, *(a1)), \ +__ch (__un_args_eq (const __vector unsigned int, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned char, *(a1)), \ +__ch (__un_args_eq (const __vector signed int, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed char, *(a1)), \ +__ch (__un_args_eq (const __vector __bool int, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned short, *(a1)), \ +__ch (__un_args_eq (const __vector float, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed short, *(a1)), \ +__ch (__un_args_eq (const unsigned char, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned int, *(a1)), \ +__ch (__un_args_eq (const signed char, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed int, *(a1)), \ +__ch (__un_args_eq (const unsigned short, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (unsigned long, *(a1)), \ +__ch (__un_args_eq (const short, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (signed long, *(a1)), \ +__ch (__un_args_eq (const unsigned int, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ -__ch (__un_args_eq (float, *(a1)), \ +__ch (__un_args_eq (const int, *(a1)), \ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \ - __altivec_link_error_invalid_argument ())))))))))))))))) +__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) __builtin_altivec_vexptefp ((a1)) +#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) __builtin_altivec_vrfim (a1) +#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 (vector unsigned char, *(b)), \ - ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (unsigned char, *(b)), \ - ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (vector signed char, *(b)), \ - ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (signed char, *(b)), \ - ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (vector unsigned short, *(b)), \ - ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (unsigned short, *(b)), \ - ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (vector signed short, *(b)), \ - ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (signed short, *(b)), \ - ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (vector unsigned int, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (unsigned int, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (unsigned long, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (vector signed int, *(b)), \ - ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (signed int, *(b)), \ - ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (signed long, *(b)), \ - ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (vector float, *(b)), \ - ((vector float) __builtin_altivec_lvx ((a), (b))), \ -__ch (__un_args_eq (float, *(b)), \ - ((vector float) __builtin_altivec_lvx ((a), (b))), \ -__altivec_link_error_invalid_argument ())))))))))))))))) +__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 (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))), \ -__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))), \ -__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 (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 (float, *(b)), \ - ((vector float) __builtin_altivec_lvewx ((a), (b))), \ -__altivec_link_error_invalid_argument ()))))))))) +__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))), \ + ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ __ch (__un_args_eq (signed int, *(b)), \ - ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ + ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \ __ch (__un_args_eq (unsigned long, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ + ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ __ch (__un_args_eq (signed long, *(b)), \ - ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ + ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \ __ch (__un_args_eq (float, *(b)), \ - ((vector float) __builtin_altivec_lvewx ((a), (b))), \ -__altivec_link_error_invalid_argument ()))))) + ((__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))), \ + ((__vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ __ch (__un_args_eq (signed short, *(b)), \ - ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ -__altivec_link_error_invalid_argument ())) + ((__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))), \ + ((__vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ __ch (__un_args_eq (signed char, *(b)), \ - ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ -__altivec_link_error_invalid_argument ())) + ((__vector signed char) __builtin_altivec_lvebx ((a), (b))), \ +__builtin_altivec_compiletime_error ("vec_lvebx"))) #define vec_ldl(a, b) \ -__ch (__un_args_eq (vector unsigned char, *(b)), \ - ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (unsigned char, *(b)), \ - ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (vector signed char, *(b)), \ - ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (signed char, *(b)), \ - ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (vector unsigned short, *(b)), \ - ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (unsigned short, *(b)), \ - ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (vector signed short, *(b)), \ - ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (signed short, *(b)), \ - ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (vector unsigned int, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (unsigned int, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (unsigned long, *(b)), \ - ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (vector signed int, *(b)), \ - ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (signed int, *(b)), \ - ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (signed long, *(b)), \ - ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (vector float, *(b)), \ - ((vector float) __builtin_altivec_lvxl ((a), (b))), \ -__ch (__un_args_eq (float, *(b)), \ - ((vector float) __builtin_altivec_lvxl ((a), (b))), \ -__altivec_link_error_invalid_argument ())))))))))))))))) - -#define vec_loge(a1) __builtin_altivec_vlogefp ((a1)) +__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 (unsigned char, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed char, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (unsigned short, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed short, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (unsigned int, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed int, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (unsigned long, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed long, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__ch (__un_args_eq (float, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \ -__altivec_link_error_invalid_argument ()))))))))) +__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 (unsigned char, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed char, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (unsigned short, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed short, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (unsigned int, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed int, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (unsigned long, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (signed long, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__ch (__un_args_eq (float, *(a2)), \ - ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \ -__altivec_link_error_invalid_argument ()))))))))) - -#define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3))) - -#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3)) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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))), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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 signed int, (a1), vector signed int, (a2)), \ - ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 signed short, (a1), vector signed short, (a2)), \ - ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 signed char, (a1), vector signed char, (a2)), \ - ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 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 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))), \ - __altivec_link_error_invalid_argument ()))))))) +__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 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 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))), \ -__altivec_link_error_invalid_argument ())) +__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 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))), \ -__altivec_link_error_invalid_argument ())) +__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 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 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))), \ - __altivec_link_error_invalid_argument ()))))))) +__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))), \ -__altivec_link_error_invalid_argument ()))) +__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 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))), \ -__altivec_link_error_invalid_argument ())) +__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 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))), \ -__altivec_link_error_invalid_argument ())) +__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_mfvscr() (((__vector unsigned short) __builtin_altivec_mfvscr ())) #define vec_min(a1, a2) \ -__ch (__bin_args_eq (vector signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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))), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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 signed int, (a1), vector signed int, (a2)), \ - ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 signed short, (a1), vector signed short, (a2)), \ - ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 signed char, (a1), vector signed char, (a2)), \ - ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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))), \ - __altivec_link_error_invalid_argument ())))) - -#define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((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))), \ - __altivec_link_error_invalid_argument ())))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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 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 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)), \ - __altivec_link_error_invalid_argument ())))))) +__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))), \ - __altivec_link_error_invalid_argument ())))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ())))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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)))), \ - __altivec_link_error_invalid_argument ()) +__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 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 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))), \ - __altivec_link_error_invalid_argument ()))))))) +__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 signed int, (a2)), \ - ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ -__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ - ((vector float) __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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))))))))))))))) +__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 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))), \ - __altivec_link_error_invalid_argument ())))) +__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 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))), \ -__altivec_link_error_invalid_argument ())) +__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 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))), \ -__altivec_link_error_invalid_argument ())) +__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 unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \ -__altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ())))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ - __altivec_link_error_invalid_argument ())))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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 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 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))), \ - __altivec_link_error_invalid_argument ()))))))) - -#define vec_re(a1) __builtin_altivec_vrefp ((a1)) +__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))), \ - __altivec_link_error_invalid_argument ())))))) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) - -#define vec_round(a1) __builtin_altivec_vrfin ((a1)) - -#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1)) +__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 signed 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 signed int, (a1), vector signed int, (a2), vector signed 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 signed 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 signed short, (a1), vector signed short, (a2), vector signed 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 signed 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 signed char, (a1), vector signed char, (a2), vector signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ())))))))))))))) +__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))), \ - __altivec_link_error_invalid_argument ())))))) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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 (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \ - ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector float, (a1), vector float, (a2), unsigned int, (a3)), \ - ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \ - ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \ - ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \ - ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \ - ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \ - ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \ - ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \ - ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \ - ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \ - ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \ - ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \ - ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ -__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned int, (a3)), \ - ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ - __altivec_link_error_invalid_argument ())))))))))))))) +__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 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 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))), \ - __altivec_link_error_invalid_argument ())))))))))))))))))) +__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 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))), \ - __altivec_link_error_invalid_argument ())))))))))))))) +__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 (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \ - ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \ - ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \ - ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \ - ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \ - ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \ - ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \ - ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \ - ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \ - ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \ - ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \ - ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \ - ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \ - ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \ - ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ - __altivec_link_error_invalid_argument ())))))))))))))) +__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 (__bin_args_eq (vector float, ((a1)), int, ((a2))), \ - ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \ - ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \ - ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \ - ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \ - ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \ - ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ -__altivec_link_error_invalid_argument ())))))) +__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 (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \ - ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \ - ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \ - ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \ - ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ -__altivec_link_error_invalid_argument ())))) +__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 (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \ - ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \ - ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \ - ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \ - ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ -__altivec_link_error_invalid_argument ())))) +__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) __builtin_altivec_vspltisb ((a1)) +#define vec_splat_s8(a1) ((__vector signed char) __builtin_altivec_vspltisb (a1)) -#define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1)) +#define vec_splat_s16(a1) ((__vector signed short) __builtin_altivec_vspltish (a1)) -#define vec_splat_s32(a1) __builtin_altivec_vspltisw ((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_u8(a1) ((__vector unsigned char) __builtin_altivec_vspltisb (a1)) -#define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((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_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))), \ - __altivec_link_error_invalid_argument ())))))) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ - __altivec_link_error_invalid_argument ())))))) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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))), \ -__altivec_link_error_invalid_argument ())) +__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 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 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))), \ - __altivec_link_error_invalid_argument ())))))))))))))))))) +__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 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))), \ - __altivec_link_error_invalid_argument ())))))))))))))) +__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) \ - __builtin_altivec_stvx ((vector signed int) (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) \ - __builtin_altivec_stvxl ((vector signed int) (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 (__un_args_eq (vector unsigned char, (a)), \ - __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ -__ch (__un_args_eq (vector signed char, (a)), \ - __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ -__ch (__un_args_eq (vector unsigned short, (a)), \ - __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ -__ch (__un_args_eq (vector signed short, (a)), \ - __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ -__ch (__un_args_eq (vector unsigned int, (a)), \ - __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ -__ch (__un_args_eq (vector signed int, (a)), \ - __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ -__ch (__un_args_eq (vector float, (a)), \ - __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ - __altivec_link_error_invalid_argument ()))))))) +__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 (__un_args_eq (vector unsigned int, (a)), \ - __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ -__ch (__un_args_eq (vector signed int, (a)), \ - __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ -__ch (__un_args_eq (vector float, (a)), \ - __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ -__altivec_link_error_invalid_argument ()))) +__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 (__un_args_eq (vector unsigned short, (a)), \ - __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ -__ch (__un_args_eq (vector signed short, (a)), \ - __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ -__altivec_link_error_invalid_argument ())) +__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 (__un_args_eq (vector unsigned char, (a)), \ - __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ -__ch (__un_args_eq (vector signed char, (a)), \ - __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ -__altivec_link_error_invalid_argument ())) +__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 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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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))), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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 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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ())))) +__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 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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ())))) +__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 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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ())))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 signed int, (a1), vector signed int, (a2)), \ - ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ - __altivec_link_error_invalid_argument ())))))))))))) +__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 signed int, (a1), vector signed int, (a2)), \ - ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 signed short, (a1), vector signed short, (a2)), \ - ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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 signed char, (a1), vector signed char, (a2)), \ - ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \ -__altivec_link_error_invalid_argument ()) +__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 signed 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 signed 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))), \ -__altivec_link_error_invalid_argument ()))) +__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))), \ - __altivec_link_error_invalid_argument ()))) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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))), \ -__altivec_link_error_invalid_argument ()) +__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) __builtin_altivec_vsum2sws ((a1), (a2)) +#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) __builtin_altivec_vsumsws ((a1), (a2)) +#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) __builtin_altivec_vrfiz ((a1)) +#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 unsigned short, (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))), \ - __altivec_link_error_invalid_argument ()))) +__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 signed short, (a1)), \ - ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ -__altivec_link_error_invalid_argument ()) +__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 unsigned short, (a1)), \ - ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \ -__altivec_link_error_invalid_argument ()) +__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 signed char, (a1)), \ - ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ -__altivec_link_error_invalid_argument ()) +__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 unsigned short, (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))), \ - __altivec_link_error_invalid_argument ()))) +__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 signed short, (a1)), \ - ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ -__altivec_link_error_invalid_argument ()) +__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 unsigned short, (a1)), \ - ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \ -__altivec_link_error_invalid_argument ()) +__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 signed char, (a1)), \ - ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ -__altivec_link_error_invalid_argument ()) +__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 unsigned int, ((a2))), \ - ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ -__ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \ - ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ -__ch (__bin_args_eq (vector signed int, ((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 signed int, ((a2))), \ - ((vector float) __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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 unsigned 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 signed 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 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 unsigned char, ((a1)), vector unsigned 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 unsigned char, ((a2))), \ - ((vector signed char) __builtin_altivec_vxor ((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_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ - __altivec_link_error_invalid_argument ()))))))))))))))))))))))) +__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 signed 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 unsigned 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 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 signed 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 unsigned 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 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 signed 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 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 unsigned 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 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 float, (a1), vector float, (a2)), \ - __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) - -#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) - -#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)) +__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 signed 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 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 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 unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ -__ch (__bin_args_eq (vector signed 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 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 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 unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ -__ch (__bin_args_eq (vector signed 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 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 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 unsigned 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) - -#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)) - -#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)) - -#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)) - -#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)) - -#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1)) +__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 signed 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 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 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 unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ -__ch (__bin_args_eq (vector signed 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 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 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 unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ -__ch (__bin_args_eq (vector signed 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 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 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 unsigned 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) +__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 signed 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 signed 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 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 signed 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 signed 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 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 signed 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 signed 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 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) - -#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1) +__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 signed 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 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 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 unsigned char, (a2)), \ - __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ -__ch (__bin_args_eq (vector signed 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 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 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 unsigned short, (a2)), \ - __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ -__ch (__bin_args_eq (vector signed 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 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 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 unsigned 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)), \ - __altivec_link_error_invalid_argument ()))))))))))))) - -#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)) - -#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)) - -#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)) - -#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)) - -#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)) - -#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (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 */ diff --git a/contrib/gcc/config/rs6000/altivec.md b/contrib/gcc/config/rs6000/altivec.md index db341cb..505a573 100644 --- a/contrib/gcc/config/rs6000/altivec.md +++ b/contrib/gcc/config/rs6000/altivec.md @@ -594,9 +594,9 @@ ;; Fused multiply subtract (define_insn "altivec_vnmsubfp" [(set (match_operand:V4SF 0 "register_operand" "=v") - (minus:V4SF (mult:V4SF (match_operand:V4SF 1 "register_operand" "v") + (neg:V4SF (minus:V4SF (mult:V4SF (match_operand:V4SF 1 "register_operand" "v") (match_operand:V4SF 2 "register_operand" "v")) - (match_operand:V4SF 3 "register_operand" "v")))] + (match_operand:V4SF 3 "register_operand" "v"))))] "TARGET_ALTIVEC" "vnmsubfp %0,%1,%2,%3" [(set_attr "type" "vecfloat")]) diff --git a/contrib/gcc/config/rs6000/beos.h b/contrib/gcc/config/rs6000/beos.h index 1ce36bf..a9e88ac 100644 --- a/contrib/gcc/config/rs6000/beos.h +++ b/contrib/gcc/config/rs6000/beos.h @@ -23,18 +23,6 @@ #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (BeOS/PowerPC)"); -/* Enable AIX XL compiler calling convention breakage compatibility. */ -#define MASK_XL_CALL 0x40000000 -#define TARGET_XL_CALL (target_flags & MASK_XL_CALL) -#undef SUBTARGET_SWITCHES -#define SUBTARGET_SWITCHES \ - {"xl-call", MASK_XL_CALL, \ - N_("Always pass floating-point arguments in memory") }, \ - {"no-xl-call", - MASK_XL_CALL, \ - N_("Don't always pass floating-point arguments in memory") }, \ - {"threads", 0}, \ - {"pe", 0}, - #undef ASM_SPEC #define ASM_SPEC "-u %(asm_cpu)" diff --git a/contrib/gcc/config/rs6000/darwin-ldouble-shared.c b/contrib/gcc/config/rs6000/darwin-ldouble-shared.c new file mode 100644 index 0000000..8ceea0a --- /dev/null +++ b/contrib/gcc/config/rs6000/darwin-ldouble-shared.c @@ -0,0 +1,2 @@ +#define IN_LIBGCC2_S 1 +#include "darwin-ldouble.c" diff --git a/contrib/gcc/config/rs6000/darwin-ldouble.c b/contrib/gcc/config/rs6000/darwin-ldouble.c index 3174ebb..210f2d6 100644 --- a/contrib/gcc/config/rs6000/darwin-ldouble.c +++ b/contrib/gcc/config/rs6000/darwin-ldouble.c @@ -1,5 +1,5 @@ /* 128-bit long double support routines for Darwin. - Copyright (C) 1993, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 1993, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GCC. @@ -48,7 +48,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA This code currently assumes big-endian. */ -#if !_SOFT_FLOAT && (defined (__MACH__) || defined (__powerpc64__)) +#if !_SOFT_FLOAT && (defined (__MACH__) || defined (__powerpc64__) || defined (_AIX)) #define fabs(x) __builtin_fabs(x) @@ -58,10 +58,27 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA but GCC currently generates poor code when a union is used to turn a long double into a pair of doubles. */ -extern long double _xlqadd (double, double, double, double); -extern long double _xlqsub (double, double, double, double); -extern long double _xlqmul (double, double, double, double); -extern long double _xlqdiv (double, double, double, double); +extern long double __gcc_qadd (double, double, double, double); +extern long double __gcc_qsub (double, double, double, double); +extern long double __gcc_qmul (double, double, double, double); +extern long double __gcc_qdiv (double, double, double, double); + +#if defined __ELF__ && defined IN_LIBGCC2_S +/* Provide definitions of the old symbol names to statisfy apps and + shared libs built against an older libgcc. To access the _xlq + symbols an explicit version reference is needed, so these won't + satisfy an unadorned reference like _xlqadd. If dot symbols are + not needed, the assembler will remove the aliases from the symbol + table. */ +__asm__ (".symver __gcc_qadd,_xlqadd@GCC_3.4\n\t" + ".symver __gcc_qsub,_xlqsub@GCC_3.4\n\t" + ".symver __gcc_qmul,_xlqmul@GCC_3.4\n\t" + ".symver __gcc_qdiv,_xlqdiv@GCC_3.4\n\t" + ".symver .__gcc_qadd,._xlqadd@GCC_3.4\n\t" + ".symver .__gcc_qsub,._xlqsub@GCC_3.4\n\t" + ".symver .__gcc_qmul,._xlqmul@GCC_3.4\n\t" + ".symver .__gcc_qdiv,._xlqdiv@GCC_3.4"); +#endif typedef union { @@ -73,7 +90,7 @@ static const double FPKINF = 1.0/0.0; /* Add two 'long double' values and return the result. */ long double -_xlqadd (double a, double b, double c, double d) +__gcc_qadd (double a, double b, double c, double d) { longDblUnion z; double t, tau, u, FPR_zero, FPR_PosInf; @@ -132,13 +149,13 @@ _xlqadd (double a, double b, double c, double d) } long double -_xlqsub (double a, double b, double c, double d) +__gcc_qsub (double a, double b, double c, double d) { - return _xlqadd (a, b, -c, -d); + return __gcc_qadd (a, b, -c, -d); } long double -_xlqmul (double a, double b, double c, double d) +__gcc_qmul (double a, double b, double c, double d) { longDblUnion z; double t, tau, u, v, w, FPR_zero, FPR_PosInf; @@ -169,7 +186,7 @@ _xlqmul (double a, double b, double c, double d) } long double -_xlqdiv (double a, double b, double c, double d) +__gcc_qdiv (double a, double b, double c, double d) { longDblUnion z; double s, sigma, t, tau, u, v, w, FPR_zero, FPR_PosInf; diff --git a/contrib/gcc/config/rs6000/darwin.h b/contrib/gcc/config/rs6000/darwin.h index 62ed74c..cae8bac 100644 --- a/contrib/gcc/config/rs6000/darwin.h +++ b/contrib/gcc/config/rs6000/darwin.h @@ -111,6 +111,13 @@ do { \ #define SUBTARGET_EXTRA_SPECS \ { "darwin_arch", "ppc" }, +/* The "-faltivec" option should have been called "-maltivec" all along. */ +#define SUBTARGET_OPTION_TRANSLATE_TABLE \ + { "-faltivec", "-maltivec -include altivec.h" }, \ + { "-fno-altivec", "-mno-altivec" }, \ + { "-Waltivec-long-deprecated", "-mwarn-altivec-long" }, \ + { "-Wno-altivec-long-deprecated", "-mno-warn-altivec-long" } + /* Make both r2 and r3 available for allocation. */ #define FIXED_R2 0 #define FIXED_R13 0 diff --git a/contrib/gcc/config/rs6000/eabi.asm b/contrib/gcc/config/rs6000/eabi.asm index 058f9b9..c7876bc 100644 --- a/contrib/gcc/config/rs6000/eabi.asm +++ b/contrib/gcc/config/rs6000/eabi.asm @@ -252,7 +252,7 @@ FUNC_START(__eabi_convert) .Lcvt: lwzu 6,4(3) /* pointer to convert */ - cmpi 0,6,0 + cmpwi 0,6,0 beq- .Lcvt2 /* if pointer is null, don't convert */ add 6,6,12 /* convert pointer */ diff --git a/contrib/gcc/config/rs6000/libgcc-ppc64.ver b/contrib/gcc/config/rs6000/libgcc-ppc64.ver index 116d5e7..b27b4b4 100644 --- a/contrib/gcc/config/rs6000/libgcc-ppc64.ver +++ b/contrib/gcc/config/rs6000/libgcc-ppc64.ver @@ -1,7 +1,7 @@ -GCC_3.4 { +GCC_3.4.4 { # long double support - _xlqadd - _xlqsub - _xlqmul - _xlqdiv + __gcc_qadd + __gcc_qsub + __gcc_qmul + __gcc_qdiv } diff --git a/contrib/gcc/config/rs6000/linux-unwind.h b/contrib/gcc/config/rs6000/linux-unwind.h new file mode 100644 index 0000000..842fd10 --- /dev/null +++ b/contrib/gcc/config/rs6000/linux-unwind.h @@ -0,0 +1,322 @@ +/* DWARF2 EH unwinding support for PowerPC and PowerPC64 Linux. + Copyright (C) 2004, 2005 Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 2, or (at your + option) any later version. + + In addition to the permissions in the GNU General Public License, + the Free Software Foundation gives you unlimited permission to link + the compiled version of this file with other programs, and to + distribute those programs without any restriction coming from the + use of this file. (The General Public License restrictions do + apply in other respects; for example, they cover modification of + the file, and distribution when not linked into another program.) + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA. */ + +/* This file defines our own versions of various kernel and user + structs, so that system headers are not needed, which otherwise + can make bootstrapping a new toolchain difficult. Do not use + these structs elsewhere; Many fields are missing, particularly + from the end of the structures. */ + +struct gcc_vregs +{ + __attribute__ ((vector_size (16))) int vr[32]; +#ifdef __powerpc64__ + unsigned int pad1[3]; + unsigned int vscr; + unsigned int vsave; + unsigned int pad2[3]; +#else + unsigned int vsave; + unsigned int pad[2]; + unsigned int vscr; +#endif +}; + +struct gcc_regs +{ + unsigned long gpr[32]; + unsigned long nip; + unsigned long msr; + unsigned long orig_gpr3; + unsigned long ctr; + unsigned long link; + unsigned long xer; + unsigned long ccr; + unsigned long softe; + unsigned long trap; + unsigned long dar; + unsigned long dsisr; + unsigned long result; + unsigned long pad1[4]; + double fpr[32]; + unsigned int pad2; + unsigned int fpscr; +#ifdef __powerpc64__ + struct gcc_vregs *vp; +#else + unsigned int pad3[2]; +#endif + struct gcc_vregs vregs; +}; + +struct gcc_ucontext +{ +#ifdef __powerpc64__ + unsigned long pad[28]; +#else + unsigned long pad[12]; +#endif + struct gcc_regs *regs; + struct gcc_regs rsave; +}; + +#ifdef __powerpc64__ + +enum { SIGNAL_FRAMESIZE = 128 }; + +/* If the current unwind info (FS) does not contain explicit info + saving R2, then we have to do a minor amount of code reading to + figure out if it was saved. The big problem here is that the + code that does the save/restore is generated by the linker, so + we have no good way to determine at compile time what to do. */ + +#define MD_FROB_UPDATE_CONTEXT(CTX, FS) \ + do { \ + if ((FS)->regs.reg[2].how == REG_UNSAVED) \ + { \ + unsigned int *insn \ + = (unsigned int *) \ + _Unwind_GetGR ((CTX), LINK_REGISTER_REGNUM); \ + if (*insn == 0xE8410028) \ + _Unwind_SetGRPtr ((CTX), 2, (CTX)->cfa + 40); \ + } \ + } while (0) + +/* If PC is at a sigreturn trampoline, return a pointer to the + regs. Otherwise return NULL. */ + +#define PPC_LINUX_GET_REGS(CONTEXT) \ +({ \ + const unsigned char *pc = (CONTEXT)->ra; \ + struct gcc_regs *regs = NULL; \ + \ + /* addi r1, r1, 128; li r0, 0x0077; sc (sigreturn) */ \ + /* addi r1, r1, 128; li r0, 0x00AC; sc (rt_sigreturn) */ \ + if (*(unsigned int *) (pc + 0) != 0x38210000 + SIGNAL_FRAMESIZE \ + || *(unsigned int *) (pc + 8) != 0x44000002) \ + ; \ + else if (*(unsigned int *) (pc + 4) == 0x38000077) \ + { \ + struct sigframe { \ + char gap[SIGNAL_FRAMESIZE]; \ + unsigned long pad[7]; \ + struct gcc_regs *regs; \ + } *frame = (struct sigframe *) (CONTEXT)->cfa; \ + regs = frame->regs; \ + } \ + else if (*(unsigned int *) (pc + 4) == 0x380000AC) \ + { \ + /* This works for 2.4 kernels, but not for 2.6 kernels with vdso \ + because pc isn't pointing into the stack. Can be removed when \ + no one is running 2.4.19 or 2.4.20, the first two ppc64 \ + kernels released. */ \ + struct rt_sigframe_24 { \ + int tramp[6]; \ + void *pinfo; \ + struct gcc_ucontext *puc; \ + } *frame24 = (struct rt_sigframe_24 *) pc; \ + \ + /* Test for magic value in *puc of vdso. */ \ + if ((long) frame24->puc != -21 * 8) \ + regs = frame24->puc->regs; \ + else \ + { \ + /* This works for 2.4.21 and later kernels. */ \ + struct rt_sigframe { \ + char gap[SIGNAL_FRAMESIZE]; \ + struct gcc_ucontext uc; \ + unsigned long pad[2]; \ + int tramp[6]; \ + void *pinfo; \ + struct gcc_ucontext *puc; \ + } *frame = (struct rt_sigframe *) (CONTEXT)->cfa; \ + regs = frame->uc.regs; \ + } \ + } \ + regs; \ +}) + +#define LINUX_HWCAP_DEFAULT 0xc0000000 + +#define PPC_LINUX_VREGS(REGS) (REGS)->vp + +#else /* !__powerpc64__ */ + +enum { SIGNAL_FRAMESIZE = 64 }; + +#define PPC_LINUX_GET_REGS(CONTEXT) \ +({ \ + const unsigned char *pc = (CONTEXT)->ra; \ + struct gcc_regs *regs = NULL; \ + \ + /* li r0, 0x7777; sc (sigreturn old) */ \ + /* li r0, 0x0077; sc (sigreturn new) */ \ + /* li r0, 0x6666; sc (rt_sigreturn old) */ \ + /* li r0, 0x00AC; sc (rt_sigreturn new) */ \ + if (*(unsigned int *) (pc + 4) != 0x44000002) \ + ; \ + else if (*(unsigned int *) (pc + 0) == 0x38007777 \ + || *(unsigned int *) (pc + 0) == 0x38000077) \ + { \ + struct sigframe { \ + char gap[SIGNAL_FRAMESIZE]; \ + unsigned long pad[7]; \ + struct gcc_regs *regs; \ + } *frame = (struct sigframe *) (CONTEXT)->cfa; \ + regs = frame->regs; \ + } \ + else if (*(unsigned int *) (pc + 0) == 0x38006666 \ + || *(unsigned int *) (pc + 0) == 0x380000AC) \ + { \ + struct rt_sigframe { \ + char gap[SIGNAL_FRAMESIZE + 16]; \ + char siginfo[128]; \ + struct gcc_ucontext uc; \ + } *frame = (struct rt_sigframe *) (CONTEXT)->cfa; \ + regs = frame->uc.regs; \ + } \ + regs; \ +}) + +#define LINUX_HWCAP_DEFAULT 0x80000000 + +#define PPC_LINUX_VREGS(REGS) &(REGS)->vregs + +#endif + +/* Do code reading to identify a signal frame, and set the frame + state data appropriately. See unwind-dw2.c for the structs. */ + +#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ + do { \ + static long hwcap = 0; \ + struct gcc_regs *regs = PPC_LINUX_GET_REGS (CONTEXT); \ + long new_cfa; \ + int i; \ + \ + if (regs == NULL) \ + break; \ + \ + new_cfa = regs->gpr[STACK_POINTER_REGNUM]; \ + (FS)->cfa_how = CFA_REG_OFFSET; \ + (FS)->cfa_reg = STACK_POINTER_REGNUM; \ + (FS)->cfa_offset = new_cfa - (long) (CONTEXT)->cfa; \ + \ + for (i = 0; i < 32; i++) \ + if (i != STACK_POINTER_REGNUM) \ + { \ + (FS)->regs.reg[i].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[i].loc.offset \ + = (long) ®s->gpr[i] - new_cfa; \ + } \ + \ + (FS)->regs.reg[CR2_REGNO].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[CR2_REGNO].loc.offset \ + = (long) ®s->ccr - new_cfa; \ + \ + (FS)->regs.reg[LINK_REGISTER_REGNUM].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[LINK_REGISTER_REGNUM].loc.offset \ + = (long) ®s->link - new_cfa; \ + \ + (FS)->regs.reg[ARG_POINTER_REGNUM].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[ARG_POINTER_REGNUM].loc.offset \ + = (long) ®s->nip - new_cfa; \ + (FS)->retaddr_column = ARG_POINTER_REGNUM; \ + \ + if (hwcap == 0) \ + { \ + /* __libc_stack_end holds the original stack passed to a \ + process. */ \ + extern long *__libc_stack_end; \ + long argc; \ + char **argv; \ + char **envp; \ + struct auxv \ + { \ + long a_type; \ + long a_val; \ + } *auxp; \ + \ + /* The Linux kernel puts argc first on the stack. */ \ + argc = __libc_stack_end[0]; \ + /* Followed by argv, NULL terminated. */ \ + argv = (char **) __libc_stack_end + 1; \ + /* Followed by environment string pointers, NULL terminated. */ \ + envp = argv + argc + 1; \ + while (*envp++) \ + continue; \ + /* Followed by the aux vector, zero terminated. */ \ + for (auxp = (struct auxv *) envp; auxp->a_type != 0; ++auxp) \ + if (auxp->a_type == 16) \ + { \ + hwcap = auxp->a_val; \ + break; \ + } \ + \ + /* These will already be set if we found AT_HWCAP. A non-zero \ + value stops us looking again if for some reason we couldn't \ + find AT_HWCAP. */ \ + hwcap |= LINUX_HWCAP_DEFAULT; \ + } \ + \ + /* If we have a FPU... */ \ + if (hwcap & 0x08000000) \ + for (i = 0; i < 32; i++) \ + { \ + (FS)->regs.reg[i + 32].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[i + 32].loc.offset \ + = (long) ®s->fpr[i] - new_cfa; \ + } \ + \ + /* If we have a VMX unit... */ \ + if (hwcap & 0x10000000) \ + { \ + struct gcc_vregs *vregs; \ + vregs = PPC_LINUX_VREGS (regs); \ + if (regs->msr & (1 << 25)) \ + { \ + for (i = 0; i < 32; i++) \ + { \ + (FS)->regs.reg[i + FIRST_ALTIVEC_REGNO].how \ + = REG_SAVED_OFFSET; \ + (FS)->regs.reg[i + FIRST_ALTIVEC_REGNO].loc.offset \ + = (long) &vregs[i] - new_cfa; \ + } \ + \ + (FS)->regs.reg[VSCR_REGNO].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[VSCR_REGNO].loc.offset \ + = (long) &vregs->vscr - new_cfa; \ + } \ + \ + (FS)->regs.reg[VRSAVE_REGNO].how = REG_SAVED_OFFSET; \ + (FS)->regs.reg[VRSAVE_REGNO].loc.offset \ + = (long) &vregs->vsave - new_cfa; \ + } \ + \ + goto SUCCESS; \ + } while (0) diff --git a/contrib/gcc/config/rs6000/linux.h b/contrib/gcc/config/rs6000/linux.h index 009ac66..84cdeed 100644 --- a/contrib/gcc/config/rs6000/linux.h +++ b/contrib/gcc/config/rs6000/linux.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for PowerPC machines running Linux. - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Michael Meissner (meissner@cygnus.com). @@ -24,6 +24,14 @@ #undef MD_EXEC_PREFIX #undef MD_STARTFILE_PREFIX +/* Linux doesn't support saving and restoring 64-bit regs in a 32-bit + process. */ +#define OS_MISSING_POWERPC64 1 + +/* glibc has float and long double forms of math functions. */ +#undef TARGET_C99_FUNCTIONS +#define TARGET_C99_FUNCTIONS 1 + #undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS() \ do \ @@ -86,94 +94,16 @@ #undef TARGET_64BIT #define TARGET_64BIT 0 -/* We don't need to generate entries in .fixup. */ +/* We don't need to generate entries in .fixup, except when + -mrelocatable or -mrelocatable-lib is given. */ #undef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP \ + (target_flags & target_flags_explicit & MASK_RELOCATABLE) #define TARGET_ASM_FILE_END file_end_indicate_exec_stack #define TARGET_HAS_F_SETLKW -/* Do code reading to identify a signal frame, and set the frame - state data appropriately. See unwind-dw2.c for the structs. */ - #ifdef IN_LIBGCC2 -#include <signal.h> - -/* During the 2.5 kernel series the kernel ucontext was changed, but - the new layout is compatible with the old one, so we just define - and use the old one here for simplicity and compatibility. */ - -struct kernel_old_ucontext { - unsigned long uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - struct sigcontext_struct uc_mcontext; - sigset_t uc_sigmask; -}; - -enum { SIGNAL_FRAMESIZE = 64 }; +#include "config/rs6000/linux-unwind.h" #endif - -#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ - do { \ - unsigned char *pc_ = (CONTEXT)->ra; \ - struct sigcontext *sc_; \ - long new_cfa_; \ - int i_; \ - \ - /* li r0, 0x7777; sc (sigreturn old) */ \ - /* li r0, 0x0077; sc (sigreturn new) */ \ - /* li r0, 0x6666; sc (rt_sigreturn old) */ \ - /* li r0, 0x00AC; sc (rt_sigreturn new) */ \ - if (*(unsigned int *) (pc_+4) != 0x44000002) \ - break; \ - if (*(unsigned int *) (pc_+0) == 0x38007777 \ - || *(unsigned int *) (pc_+0) == 0x38000077) \ - { \ - struct sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - struct sigcontext sigctx; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->sigctx; \ - } \ - else if (*(unsigned int *) (pc_+0) == 0x38006666 \ - || *(unsigned int *) (pc_+0) == 0x380000AC) \ - { \ - struct rt_sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - unsigned long _unused[2]; \ - struct siginfo *pinfo; \ - void *puc; \ - struct siginfo info; \ - struct kernel_old_ucontext uc; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->uc.uc_mcontext; \ - } \ - else \ - break; \ - \ - new_cfa_ = sc_->regs->gpr[STACK_POINTER_REGNUM]; \ - (FS)->cfa_how = CFA_REG_OFFSET; \ - (FS)->cfa_reg = STACK_POINTER_REGNUM; \ - (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ - \ - for (i_ = 0; i_ < 32; i_++) \ - if (i_ != STACK_POINTER_REGNUM) \ - { \ - (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[i_].loc.offset \ - = (long)&(sc_->regs->gpr[i_]) - new_cfa_; \ - } \ - \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].loc.offset \ - = (long)&(sc_->regs->link) - new_cfa_; \ - \ - (FS)->regs.reg[CR0_REGNO].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[CR0_REGNO].loc.offset \ - = (long)&(sc_->regs->nip) - new_cfa_; \ - (FS)->retaddr_column = CR0_REGNO; \ - goto SUCCESS; \ - } while (0) - -#define OS_MISSING_POWERPC64 1 diff --git a/contrib/gcc/config/rs6000/linux64.h b/contrib/gcc/config/rs6000/linux64.h index 4fe4199..013e23a 100644 --- a/contrib/gcc/config/rs6000/linux64.h +++ b/contrib/gcc/config/rs6000/linux64.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for 64 bit PowerPC linux. - Copyright (C) 2000, 2001, 2002, 2003, 2004 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GCC. @@ -53,8 +53,11 @@ #undef PROCESSOR_DEFAULT64 #define PROCESSOR_DEFAULT64 PROCESSOR_PPC630 -#undef TARGET_RELOCATABLE -#define TARGET_RELOCATABLE (!TARGET_64BIT && (target_flags & MASK_RELOCATABLE)) +/* We don't need to generate entries in .fixup, except when + -mrelocatable or -mrelocatable-lib is given. */ +#undef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP \ + (target_flags & target_flags_explicit & MASK_RELOCATABLE) #undef RS6000_ABI_NAME #define RS6000_ABI_NAME (TARGET_64BIT ? "aixdesc" : "sysv") @@ -188,6 +191,8 @@ #define TARGET_EABI 0 #undef TARGET_PROTOTYPE #define TARGET_PROTOTYPE 0 +#undef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP 0 #endif @@ -212,9 +217,6 @@ #define PROFILE_HOOK(LABEL) \ do { if (TARGET_64BIT) output_profile_hook (LABEL); } while (0) -/* We don't need to generate entries in .fixup. */ -#undef RELOCATABLE_NEEDS_FIXUP - /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */ #undef ADJUST_FIELD_ALIGN #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \ @@ -287,6 +289,14 @@ #undef MD_EXEC_PREFIX #undef MD_STARTFILE_PREFIX +/* Linux doesn't support saving and restoring 64-bit regs in a 32-bit + process. */ +#define OS_MISSING_POWERPC64 !TARGET_64BIT + +/* glibc has float and long double forms of math functions. */ +#undef TARGET_C99_FUNCTIONS +#define TARGET_C99_FUNCTIONS 1 + #undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS() \ do \ @@ -541,182 +551,13 @@ while (0) #undef DRAFT_V4_STRUCT_RET #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT) -#define TARGET_ASM_FILE_END file_end_indicate_exec_stack +#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack #define TARGET_HAS_F_SETLKW #define LINK_GCC_C_SEQUENCE_SPEC \ "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -/* Do code reading to identify a signal frame, and set the frame - state data appropriately. See unwind-dw2.c for the structs. */ - #ifdef IN_LIBGCC2 -#include <signal.h> -#ifdef __powerpc64__ -#include <sys/ucontext.h> - -enum { SIGNAL_FRAMESIZE = 128 }; - -#else - -/* During the 2.5 kernel series the kernel ucontext was changed, but - the new layout is compatible with the old one, so we just define - and use the old one here for simplicity and compatibility. */ - -struct kernel_old_ucontext { - unsigned long uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - struct sigcontext_struct uc_mcontext; - sigset_t uc_sigmask; -}; -enum { SIGNAL_FRAMESIZE = 64 }; +#include "config/rs6000/linux-unwind.h" #endif - -#endif - -#ifdef __powerpc64__ - -/* If the current unwind info (FS) does not contain explicit info - saving R2, then we have to do a minor amount of code reading to - figure out if it was saved. The big problem here is that the - code that does the save/restore is generated by the linker, so - we have no good way to determine at compile time what to do. */ - -#define MD_FROB_UPDATE_CONTEXT(CTX, FS) \ - do { \ - if ((FS)->regs.reg[2].how == REG_UNSAVED) \ - { \ - unsigned int *insn \ - = (unsigned int *) \ - _Unwind_GetGR ((CTX), LINK_REGISTER_REGNUM); \ - if (*insn == 0xE8410028) \ - _Unwind_SetGRPtr ((CTX), 2, (CTX)->cfa + 40); \ - } \ - } while (0) - -#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ - do { \ - unsigned char *pc_ = (CONTEXT)->ra; \ - struct sigcontext *sc_; \ - long new_cfa_; \ - int i_; \ - \ - /* addi r1, r1, 128; li r0, 0x0077; sc (sigreturn) */ \ - /* addi r1, r1, 128; li r0, 0x00AC; sc (rt_sigreturn) */ \ - if (*(unsigned int *) (pc_+0) != 0x38210000 + SIGNAL_FRAMESIZE \ - || *(unsigned int *) (pc_+8) != 0x44000002) \ - break; \ - if (*(unsigned int *) (pc_+4) == 0x38000077) \ - { \ - struct sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - struct sigcontext sigctx; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->sigctx; \ - } \ - else if (*(unsigned int *) (pc_+4) == 0x380000AC) \ - { \ - struct rt_sigframe { \ - int tramp[6]; \ - struct siginfo *pinfo; \ - struct ucontext *puc; \ - } *rt_ = (struct rt_sigframe *) pc_; \ - sc_ = &rt_->puc->uc_mcontext; \ - } \ - else \ - break; \ - \ - new_cfa_ = sc_->regs->gpr[STACK_POINTER_REGNUM]; \ - (FS)->cfa_how = CFA_REG_OFFSET; \ - (FS)->cfa_reg = STACK_POINTER_REGNUM; \ - (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ - \ - for (i_ = 0; i_ < 32; i_++) \ - if (i_ != STACK_POINTER_REGNUM) \ - { \ - (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[i_].loc.offset \ - = (long)&(sc_->regs->gpr[i_]) - new_cfa_; \ - } \ - \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].loc.offset \ - = (long)&(sc_->regs->link) - new_cfa_; \ - \ - (FS)->regs.reg[ARG_POINTER_REGNUM].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[ARG_POINTER_REGNUM].loc.offset \ - = (long)&(sc_->regs->nip) - new_cfa_; \ - (FS)->retaddr_column = ARG_POINTER_REGNUM; \ - goto SUCCESS; \ - } while (0) - -#else - -#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ - do { \ - unsigned char *pc_ = (CONTEXT)->ra; \ - struct sigcontext *sc_; \ - long new_cfa_; \ - int i_; \ - \ - /* li r0, 0x7777; sc (sigreturn old) */ \ - /* li r0, 0x0077; sc (sigreturn new) */ \ - /* li r0, 0x6666; sc (rt_sigreturn old) */ \ - /* li r0, 0x00AC; sc (rt_sigreturn new) */ \ - if (*(unsigned int *) (pc_+4) != 0x44000002) \ - break; \ - if (*(unsigned int *) (pc_+0) == 0x38007777 \ - || *(unsigned int *) (pc_+0) == 0x38000077) \ - { \ - struct sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - struct sigcontext sigctx; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->sigctx; \ - } \ - else if (*(unsigned int *) (pc_+0) == 0x38006666 \ - || *(unsigned int *) (pc_+0) == 0x380000AC) \ - { \ - struct rt_sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - unsigned long _unused[2]; \ - struct siginfo *pinfo; \ - void *puc; \ - struct siginfo info; \ - struct kernel_old_ucontext uc; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->uc.uc_mcontext; \ - } \ - else \ - break; \ - \ - new_cfa_ = sc_->regs->gpr[STACK_POINTER_REGNUM]; \ - (FS)->cfa_how = CFA_REG_OFFSET; \ - (FS)->cfa_reg = STACK_POINTER_REGNUM; \ - (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ - \ - for (i_ = 0; i_ < 32; i_++) \ - if (i_ != STACK_POINTER_REGNUM) \ - { \ - (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[i_].loc.offset \ - = (long)&(sc_->regs->gpr[i_]) - new_cfa_; \ - } \ - \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].loc.offset \ - = (long)&(sc_->regs->link) - new_cfa_; \ - \ - (FS)->regs.reg[CR0_REGNO].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[CR0_REGNO].loc.offset \ - = (long)&(sc_->regs->nip) - new_cfa_; \ - (FS)->retaddr_column = CR0_REGNO; \ - goto SUCCESS; \ - } while (0) - -#endif - - -#define OS_MISSING_POWERPC64 !TARGET_64BIT diff --git a/contrib/gcc/config/rs6000/rs6000-c.c b/contrib/gcc/config/rs6000/rs6000-c.c index a47afee..13d0ca6 100644 --- a/contrib/gcc/config/rs6000/rs6000-c.c +++ b/contrib/gcc/config/rs6000/rs6000-c.c @@ -62,13 +62,13 @@ rs6000_pragma_longcall (cpp_reader *pfile ATTRIBUTE_UNUSED) if (c_lex (&x) != CPP_CLOSE_PAREN) SYNTAX_ERROR ("missing close paren"); - if (n != integer_zero_node && n != integer_one_node) + if (!integer_zerop (n) && !integer_onep (n)) SYNTAX_ERROR ("number must be 0 or 1"); if (c_lex (&x) != CPP_EOF) warning ("junk at end of #pragma longcall"); - rs6000_default_long_calls = (n == integer_one_node); + rs6000_default_long_calls = integer_onep (n); } /* Handle defining many CPP flags based on TARGET_xxx. As a general @@ -92,7 +92,15 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) if (! TARGET_POWER && ! TARGET_POWER2 && ! TARGET_POWERPC) builtin_define ("_ARCH_COM"); if (TARGET_ALTIVEC) - builtin_define ("__ALTIVEC__"); + { + builtin_define ("__ALTIVEC__"); + builtin_define ("__VEC__=10206"); + + /* Define the AltiVec syntactic elements. */ + builtin_define ("__vector=__attribute__((altivec(vector__)))"); + builtin_define ("__pixel=__attribute__((altivec(pixel__))) unsigned short"); + builtin_define ("__bool=__attribute__((altivec(bool__))) unsigned"); + } if (TARGET_SPE) builtin_define ("__SPE__"); if (TARGET_SOFT_FLOAT) diff --git a/contrib/gcc/config/rs6000/rs6000-protos.h b/contrib/gcc/config/rs6000/rs6000-protos.h index acac75a..3d17162 100644 --- a/contrib/gcc/config/rs6000/rs6000-protos.h +++ b/contrib/gcc/config/rs6000/rs6000-protos.h @@ -116,7 +116,7 @@ extern enum rtx_code rs6000_reverse_condition (enum machine_mode, extern void rs6000_emit_sCOND (enum rtx_code, rtx); extern void rs6000_emit_cbranch (enum rtx_code, rtx); extern char * output_cbranch (rtx, const char *, int, rtx); -extern char * output_e500_flip_gt_bit (rtx, rtx); +extern char * output_e500_flip_eq_bit (rtx, rtx); extern rtx rs6000_emit_set_const (rtx, enum machine_mode, rtx, int); extern int rs6000_emit_cmove (rtx, rtx, rtx, rtx); extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx); diff --git a/contrib/gcc/config/rs6000/rs6000.c b/contrib/gcc/config/rs6000/rs6000.c index 33f47ce..1ffd4da 100644 --- a/contrib/gcc/config/rs6000/rs6000.c +++ b/contrib/gcc/config/rs6000/rs6000.c @@ -1,6 +1,6 @@ /* Subroutines used for code generation on IBM RS/6000. Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) This file is part of GCC. @@ -220,6 +220,20 @@ static GTY(()) tree opaque_V2SI_type_node; static GTY(()) tree opaque_V2SF_type_node; static GTY(()) tree opaque_p_V2SI_type_node; +/* AltiVec requires a few more basic types in addition to the vector + types already defined in tree.c. */ +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 */ + +int rs6000_warn_altivec_long = 1; /* On by default. */ +const char *rs6000_warn_altivec_long_switch; + const char *rs6000_traceback_name; static enum { traceback_default = 0, @@ -238,7 +252,8 @@ static GTY(()) int rs6000_sr_alias_set; /* Call distance, overridden by -mlongcall and #pragma longcall(1). The only place that looks at this is rs6000_set_default_type_attributes; everywhere else should rely on the presence or absence of a longcall - attribute on the function declaration. */ + attribute on the function declaration. Exception: init_cumulative_args + looks at it too, for libcalls. */ int rs6000_default_long_calls; const char *rs6000_longcall_switch; @@ -290,6 +305,8 @@ static void rs6000_assemble_visibility (tree, int); #endif static int rs6000_ra_ever_killed (void); static tree rs6000_handle_longcall_attribute (tree *, tree, tree, int, bool *); +static tree rs6000_handle_altivec_attribute (tree *, tree, tree, int, bool *); +static const char *rs6000_mangle_fundamental_type (tree); extern const struct attribute_spec rs6000_attribute_table[]; static void rs6000_set_default_type_attributes (tree); static void rs6000_output_function_prologue (FILE *, HOST_WIDE_INT); @@ -303,6 +320,7 @@ static void rs6000_file_start (void); static unsigned int rs6000_elf_section_type_flags (tree, const char *, int); static void rs6000_elf_asm_out_constructor (rtx, int); static void rs6000_elf_asm_out_destructor (rtx, int); +static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED; static void rs6000_elf_select_section (tree, int, unsigned HOST_WIDE_INT); static void rs6000_elf_unique_section (tree, int); static void rs6000_elf_select_rtx_section (enum machine_mode, rtx, @@ -398,8 +416,7 @@ static int rs6000_get_some_local_dynamic_name_1 (rtx *, void *); static rtx rs6000_complex_function_value (enum machine_mode); static rtx rs6000_spe_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree); -static rtx rs6000_mixed_function_arg (CUMULATIVE_ARGS *, - enum machine_mode, tree, int); +static rtx rs6000_mixed_function_arg (enum machine_mode, tree, int); static void rs6000_move_block_from_reg (int regno, rtx x, int nregs); static void setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree, @@ -565,6 +582,9 @@ static const char alt_reg_names[][8] = #undef TARGET_EXPAND_BUILTIN #define TARGET_EXPAND_BUILTIN rs6000_expand_builtin +#undef TARGET_MANGLE_FUNDAMENTAL_TYPE +#define TARGET_MANGLE_FUNDAMENTAL_TYPE rs6000_mangle_fundamental_type + #undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS rs6000_init_libfuncs @@ -735,9 +755,8 @@ rs6000_override_options (const char *default_cpu) set_masks &= ~MASK_ALTIVEC; #endif - /* Don't override these by the processor default if given explicitly. */ - set_masks &= ~(target_flags_explicit - & (MASK_MULTIPLE | MASK_STRING | MASK_SOFT_FLOAT)); + /* Don't override by the processor default if given explicitly. */ + set_masks &= ~target_flags_explicit; /* Identify the processor type. */ rs6000_select[0].string = default_cpu; @@ -923,6 +942,17 @@ rs6000_override_options (const char *default_cpu) rs6000_default_long_calls = (base[0] != 'n'); } + /* Handle -m(no-)warn-altivec-long similarly. */ + if (rs6000_warn_altivec_long_switch) + { + const char *base = rs6000_warn_altivec_long_switch; + while (base[-1] != 'm') base--; + + if (*rs6000_warn_altivec_long_switch != '\0') + error ("invalid option `%s'", base); + rs6000_warn_altivec_long = (base[0] != 'n'); + } + /* Handle -mprioritize-restricted-insns option. */ rs6000_sched_restricted_insns_priority = (rs6000_sched_groups ? 1 : 0); @@ -2972,13 +3002,9 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) rs6000_emit_move (got, gsym, Pmode); else { - char buf[30]; - static int tls_got_labelno = 0; - rtx tempLR, lab, tmp3, mem; + rtx tempLR, tmp3, mem; rtx first, last; - ASM_GENERATE_INTERNAL_LABEL (buf, "LTLS", tls_got_labelno++); - lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); tempLR = gen_reg_rtx (Pmode); tmp1 = gen_reg_rtx (Pmode); tmp2 = gen_reg_rtx (Pmode); @@ -2986,8 +3012,7 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) mem = gen_rtx_MEM (Pmode, tmp1); RTX_UNCHANGING_P (mem) = 1; - first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, lab, - gsym)); + first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym)); emit_move_insn (tmp1, tempLR); emit_move_insn (tmp2, mem); emit_insn (gen_addsi3 (tmp3, tmp1, tmp2)); @@ -3942,10 +3967,11 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, cum->nargs_prototype = n_named_args; /* Check for a longcall attribute. */ - if (fntype - && lookup_attribute ("longcall", TYPE_ATTRIBUTES (fntype)) - && !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype))) - cum->call_cookie = CALL_LONG; + if ((!fntype && rs6000_default_long_calls) + || (fntype + && lookup_attribute ("longcall", TYPE_ATTRIBUTES (fntype)) + && !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype)))) + cum->call_cookie |= CALL_LONG; if (TARGET_DEBUG_ARG) { @@ -4258,105 +4284,49 @@ rs6000_spe_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, /* Determine where to place an argument in 64-bit mode with 32-bit ABI. */ static rtx -rs6000_mixed_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, - tree type, int align_words) -{ - if (mode == DFmode) - { - /* -mpowerpc64 with 32bit ABI splits up a DFmode argument - in vararg list into zero, one or two GPRs */ - if (align_words >= GP_ARG_NUM_REG) - return gen_rtx_PARALLEL (DFmode, - gen_rtvec (2, - gen_rtx_EXPR_LIST (VOIDmode, - NULL_RTX, const0_rtx), - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (mode, - cum->fregno), - const0_rtx))); - else if (align_words + rs6000_arg_size (mode, type) - > GP_ARG_NUM_REG) - /* If this is partially on the stack, then we only - include the portion actually in registers here. */ - return gen_rtx_PARALLEL (DFmode, - gen_rtvec (2, - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words), - const0_rtx), - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (mode, - cum->fregno), - const0_rtx))); - - /* split a DFmode arg into two GPRs */ - return gen_rtx_PARALLEL (DFmode, - gen_rtvec (3, - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words), - const0_rtx), - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words + 1), - GEN_INT (4)), - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (mode, cum->fregno), - const0_rtx))); - } - /* -mpowerpc64 with 32bit ABI splits up a DImode argument into one - or two GPRs */ - else if (mode == DImode) +rs6000_mixed_function_arg (enum machine_mode mode, tree type, int align_words) +{ + int n_units; + int i, k; + rtx rvec[GP_ARG_NUM_REG + 1]; + + if (align_words >= GP_ARG_NUM_REG) + return NULL_RTX; + + n_units = rs6000_arg_size (mode, type); + + /* Optimize the simple case where the arg fits in one gpr, except in + the case of BLKmode due to assign_parms assuming that registers are + BITS_PER_WORD wide. */ + if (n_units == 0 + || (n_units == 1 && mode != BLKmode)) + return gen_rtx_REG (mode, GP_ARG_MIN_REG + align_words); + + k = 0; + if (align_words + n_units > GP_ARG_NUM_REG) + /* Not all of the arg fits in gprs. Say that it goes in memory too, + using a magic NULL_RTX component. + FIXME: This is not strictly correct. Only some of the arg + belongs in memory, not all of it. However, there isn't any way + to do this currently, apart from building rtx descriptions for + the pieces of memory we want stored. Due to bugs in the generic + code we can't use the normal function_arg_partial_nregs scheme + with the PARALLEL arg description we emit here. + In any case, the code to store the whole arg to memory is often + more efficient than code to store pieces, and we know that space + is available in the right place for the whole arg. */ + rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, NULL_RTX, const0_rtx); + + i = 0; + do { - if (align_words < GP_ARG_NUM_REG - 1) - return gen_rtx_PARALLEL (DImode, - gen_rtvec (2, - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words), - const0_rtx), - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words + 1), - GEN_INT (4)))); - else if (align_words == GP_ARG_NUM_REG - 1) - return gen_rtx_PARALLEL (DImode, - gen_rtvec (2, - gen_rtx_EXPR_LIST (VOIDmode, - NULL_RTX, const0_rtx), - gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words), - const0_rtx))); - } - else if (mode == BLKmode && align_words <= (GP_ARG_NUM_REG - 1)) - { - int k; - int size = int_size_in_bytes (type); - int no_units = ((size - 1) / 4) + 1; - int max_no_words = GP_ARG_NUM_REG - align_words; - int rtlvec_len = no_units < max_no_words ? no_units : max_no_words; - rtx *rtlvec = (rtx *) alloca (rtlvec_len * sizeof (rtx)); - - memset ((char *) rtlvec, 0, rtlvec_len * sizeof (rtx)); - - for (k=0; k < rtlvec_len; k++) - rtlvec[k] = gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (SImode, - GP_ARG_MIN_REG - + align_words + k), - k == 0 ? const0_rtx : GEN_INT (k*4)); - - return gen_rtx_PARALLEL (BLKmode, gen_rtvec_v (k, rtlvec)); - } + rtx r = gen_rtx_REG (SImode, GP_ARG_MIN_REG + align_words); + rtx off = GEN_INT (i++ * 4); + rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, off); + } + while (++align_words < GP_ARG_NUM_REG && --n_units != 0); - return NULL_RTX; + return gen_rtx_PARALLEL (mode, gen_rtvec_v (k, rvec)); } /* Determine where to put an argument to a function. @@ -4451,8 +4421,8 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, { /* Vector parameters to varargs functions under AIX or Darwin get passed in memory and possibly also in GPRs. */ - int align, align_words; - enum machine_mode part_mode = mode; + int align, align_words, n_words; + enum machine_mode part_mode; /* Vector parameters must be 16-byte aligned. This places them at 2 mod 4 in terms of words in 32-bit mode, since the parameter @@ -4468,15 +4438,19 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, /* Out of registers? Memory, then. */ if (align_words >= GP_ARG_NUM_REG) return NULL_RTX; - + + if (TARGET_32BIT && TARGET_POWERPC64) + return rs6000_mixed_function_arg (mode, type, align_words); + /* The vector value goes in GPRs. Only the part of the value in GPRs is reported here. */ - if (align_words + CLASS_MAX_NREGS (mode, GENERAL_REGS) - > GP_ARG_NUM_REG) + part_mode = mode; + n_words = rs6000_arg_size (mode, type); + if (align_words + n_words > GP_ARG_NUM_REG) /* Fortunately, there are only two possibilities, the value is either wholly in GPRs or half in GPRs and half not. */ part_mode = DImode; - + return gen_rtx_REG (part_mode, GP_ARG_MIN_REG + align_words); } } @@ -4504,10 +4478,13 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, gregno += (1 - gregno) & 1; /* Multi-reg args are not split between registers and stack. */ - if (gregno + n_words - 1 <= GP_ARG_MAX_REG) - return gen_rtx_REG (mode, gregno); - else + if (gregno + n_words - 1 > GP_ARG_MAX_REG) return NULL_RTX; + + if (TARGET_32BIT && TARGET_POWERPC64) + return rs6000_mixed_function_arg (mode, type, + gregno - GP_ARG_MIN_REG); + return gen_rtx_REG (mode, gregno); } } else @@ -4517,75 +4494,82 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, if (USE_FP_FOR_ARG_P (cum, mode, type)) { - rtx fpr[2]; - rtx *r; + rtx rvec[GP_ARG_NUM_REG + 1]; + rtx r; + int k; bool needs_psave; enum machine_mode fmode = mode; - int n; unsigned long n_fpreg = (GET_MODE_SIZE (mode) + 7) >> 3; if (cum->fregno + n_fpreg > FP_ARG_MAX_REG + 1) { - /* Long double split over regs and memory. */ - if (fmode == TFmode) - fmode = DFmode; - /* Currently, we only ever need one reg here because complex doubles are split. */ - if (cum->fregno != FP_ARG_MAX_REG - 1) + if (cum->fregno != FP_ARG_MAX_REG || fmode != TFmode) abort (); + + /* Long double split over regs and memory. */ + fmode = DFmode; } - fpr[1] = gen_rtx_REG (fmode, cum->fregno); /* Do we also need to pass this arg in the parameter save area? */ needs_psave = (type && (cum->nargs_prototype <= 0 || (DEFAULT_ABI == ABI_AIX - && TARGET_XL_CALL + && TARGET_XL_COMPAT && align_words >= GP_ARG_NUM_REG))); if (!needs_psave && mode == fmode) - return fpr[1]; - - if (TARGET_32BIT && TARGET_POWERPC64 - && mode == DFmode && cum->stdarg) - return rs6000_mixed_function_arg (cum, mode, type, align_words); - - /* Describe where this piece goes. */ - r = fpr + 1; - *r = gen_rtx_EXPR_LIST (VOIDmode, *r, const0_rtx); - n = 1; + return gen_rtx_REG (fmode, cum->fregno); + k = 0; if (needs_psave) { - /* Now describe the part that goes in gprs or the stack. + /* Describe the part that goes in gprs or the stack. This piece must come first, before the fprs. */ - rtx reg = NULL_RTX; if (align_words < GP_ARG_NUM_REG) { unsigned long n_words = rs6000_arg_size (mode, type); - enum machine_mode rmode = mode; - - if (align_words + n_words > GP_ARG_NUM_REG) - /* If this is partially on the stack, then we only - include the portion actually in registers here. - We know this can only be one register because - complex doubles are splt. */ - rmode = Pmode; - reg = gen_rtx_REG (rmode, GP_ARG_MIN_REG + align_words); + + if (align_words + n_words > GP_ARG_NUM_REG + || (TARGET_32BIT && TARGET_POWERPC64)) + { + /* If this is partially on the stack, then we only + include the portion actually in registers here. */ + enum machine_mode rmode = TARGET_32BIT ? SImode : DImode; + rtx off; + do + { + r = gen_rtx_REG (rmode, + GP_ARG_MIN_REG + align_words); + off = GEN_INT (k * GET_MODE_SIZE (rmode)); + rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, off); + } + while (++align_words < GP_ARG_NUM_REG && --n_words != 0); + } + else + { + /* The whole arg fits in gprs. */ + r = gen_rtx_REG (mode, GP_ARG_MIN_REG + align_words); + rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, const0_rtx); + } } - *--r = gen_rtx_EXPR_LIST (VOIDmode, reg, const0_rtx); - ++n; + else + /* It's entirely in memory. */ + rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, NULL_RTX, const0_rtx); } - return gen_rtx_PARALLEL (mode, gen_rtvec_v (n, r)); + /* Describe where this piece goes in the fprs. */ + r = gen_rtx_REG (fmode, cum->fregno); + rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, const0_rtx); + + return gen_rtx_PARALLEL (mode, gen_rtvec_v (k, rvec)); } else if (align_words < GP_ARG_NUM_REG) { - if (TARGET_32BIT && TARGET_POWERPC64 - && (mode == DImode || mode == BLKmode)) - return rs6000_mixed_function_arg (cum, mode, type, align_words); + if (TARGET_32BIT && TARGET_POWERPC64) + return rs6000_mixed_function_arg (mode, type, align_words); return gen_rtx_REG (mode, GP_ARG_MIN_REG + align_words); } @@ -4594,15 +4578,20 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, } } -/* For an arg passed partly in registers and partly in memory, - this is the number of registers used. - For args passed entirely in registers or entirely in memory, zero. */ +/* For an arg passed partly in registers and partly in memory, this is + the number of registers used. For args passed entirely in registers + or entirely in memory, zero. When an arg is described by a PARALLEL, + perhaps using more than one register type, this function returns the + number of registers used by the first element of the PARALLEL. */ int function_arg_partial_nregs (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, int named) { int ret = 0; + int align; + int parm_offset; + int align_words; if (DEFAULT_ABI == ABI_V4) return 0; @@ -4611,17 +4600,29 @@ function_arg_partial_nregs (CUMULATIVE_ARGS *cum, enum machine_mode mode, && cum->nargs_prototype >= 0) return 0; - if (USE_FP_FOR_ARG_P (cum, mode, type)) + align = function_arg_boundary (mode, type) / PARM_BOUNDARY - 1; + parm_offset = TARGET_32BIT ? 2 : 0; + align_words = cum->words + ((parm_offset - cum->words) & align); + + if (USE_FP_FOR_ARG_P (cum, mode, type) + /* If we are passing this arg in gprs as well, then this function + should return the number of gprs (or memory) partially passed, + *not* the number of fprs. */ + && !(type + && (cum->nargs_prototype <= 0 + || (DEFAULT_ABI == ABI_AIX + && TARGET_XL_COMPAT + && align_words >= GP_ARG_NUM_REG)))) { if (cum->fregno + ((GET_MODE_SIZE (mode) + 7) >> 3) > FP_ARG_MAX_REG + 1) - ret = FP_ARG_MAX_REG - cum->fregno; + ret = FP_ARG_MAX_REG + 1 - cum->fregno; else if (cum->nargs_prototype >= 0) return 0; } - if (cum->words < GP_ARG_NUM_REG - && GP_ARG_NUM_REG < cum->words + rs6000_arg_size (mode, type)) - ret = GP_ARG_NUM_REG - cum->words; + if (align_words < GP_ARG_NUM_REG + && GP_ARG_NUM_REG < align_words + rs6000_arg_size (mode, type)) + ret = GP_ARG_NUM_REG - align_words; if (ret != 0 && TARGET_DEBUG_ARG) fprintf (stderr, "function_arg_partial_nregs: %d\n", ret); @@ -4776,6 +4777,7 @@ setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, { mem = gen_rtx_MEM (DFmode, plus_constant (save_area, off)); set_mem_alias_set (mem, set); + set_mem_align (mem, GET_MODE_ALIGNMENT (DFmode)); emit_move_insn (mem, gen_rtx_REG (DFmode, fregno)); fregno++; off += 8; @@ -5695,6 +5697,7 @@ rs6000_expand_binop_builtin (enum insn_code icode, tree arglist, rtx target) || icode == CODE_FOR_spe_evsrwiu) { /* Only allow 5-bit unsigned literals. */ + STRIP_NOPS (arg1); if (TREE_CODE (arg1) != INTEGER_CST || TREE_INT_CST_LOW (arg1) & ~0x1f) { @@ -6120,6 +6123,8 @@ altivec_expand_dst_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, || arg2 == error_mark_node) return const0_rtx; + *expandedp = true; + STRIP_NOPS (arg2); if (TREE_CODE (arg2) != INTEGER_CST || TREE_INT_CST_LOW (arg2) & ~0x3) { @@ -6136,7 +6141,6 @@ altivec_expand_dst_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, if (pat != 0) emit_insn (pat); - *expandedp = true; return NULL_RTX; } @@ -6226,6 +6230,7 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp) case ALTIVEC_BUILTIN_DSS: icode = CODE_FOR_altivec_dss; arg0 = TREE_VALUE (arglist); + STRIP_NOPS (arg0); op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); mode0 = insn_data[icode].operand[0].mode; @@ -6245,6 +6250,15 @@ 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) + arg0 = TREE_OPERAND (arg0, 0); + error ("invalid parameter combination for `%s' AltiVec intrinsic", + TREE_STRING_POINTER (arg0)); + + return const0_rtx; } /* Expand abs* operations. */ @@ -6684,6 +6698,73 @@ rs6000_init_builtins (void) opaque_V2SF_type_node = copy_node (V2SF_type_node); opaque_p_V2SI_type_node = build_pointer_type (opaque_V2SI_type_node); + /* The 'vector bool ...' types must be kept distinct from 'vector unsigned ...' + types, especially in C++ land. Similarly, 'vector pixel' is distinct from+ 'vector unsigned short'. */ + + bool_char_type_node = copy_node (unsigned_intQI_type_node); + TYPE_MAIN_VARIANT (bool_char_type_node) = bool_char_type_node; + bool_short_type_node = copy_node (unsigned_intHI_type_node); + TYPE_MAIN_VARIANT (bool_short_type_node) = bool_short_type_node; + bool_int_type_node = copy_node (unsigned_intSI_type_node); + TYPE_MAIN_VARIANT (bool_int_type_node) = bool_int_type_node; + pixel_type_node = copy_node (unsigned_intHI_type_node); + TYPE_MAIN_VARIANT (pixel_type_node) = pixel_type_node; + + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__bool char"), + bool_char_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__bool short"), + bool_short_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__bool int"), + bool_int_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__pixel"), + pixel_type_node)); + + bool_V16QI_type_node = make_vector (V16QImode, bool_char_type_node, 1); + bool_V8HI_type_node = make_vector (V8HImode, bool_short_type_node, 1); + bool_V4SI_type_node = make_vector (V4SImode, bool_int_type_node, 1); + pixel_V8HI_type_node = make_vector (V8HImode, pixel_type_node, 1); + + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector unsigned char"), + unsigned_V16QI_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector signed char"), + V16QI_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector __bool char"), + bool_V16QI_type_node)); + + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector unsigned short"), + unsigned_V8HI_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector signed short"), + V8HI_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector __bool short"), + bool_V8HI_type_node)); + + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector unsigned int"), + unsigned_V4SI_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector signed int"), + V4SI_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector __bool int"), + bool_V4SI_type_node)); + + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector float"), + V4SF_type_node)); + (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL, + get_identifier ("__vector __pixel"), + pixel_V8HI_type_node)); + if (TARGET_SPE) spe_init_builtins (); if (TARGET_ALTIVEC) @@ -6989,8 +7070,8 @@ altivec_init_builtins (void) = build_function_type (V8HI_type_node, void_list_node); tree void_ftype_void = build_function_type (void_type_node, void_list_node); - tree void_ftype_qi - = build_function_type_list (void_type_node, char_type_node, NULL_TREE); + tree void_ftype_int + = build_function_type_list (void_type_node, integer_type_node, NULL_TREE); tree v16qi_ftype_long_pcvoid = build_function_type_list (V16QI_type_node, @@ -7034,10 +7115,13 @@ altivec_init_builtins (void) = build_function_type_list (V16QI_type_node, V16QI_type_node, NULL_TREE); tree v4sf_ftype_v4sf = build_function_type_list (V4SF_type_node, V4SF_type_node, NULL_TREE); - tree void_ftype_pcvoid_int_char + tree void_ftype_pcvoid_int_int = build_function_type_list (void_type_node, pcvoid_type_node, integer_type_node, - char_type_node, NULL_TREE); + 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); @@ -7058,7 +7142,7 @@ altivec_init_builtins (void) def_builtin (MASK_ALTIVEC, "__builtin_altivec_mtvscr", void_ftype_v4si, ALTIVEC_BUILTIN_MTVSCR); def_builtin (MASK_ALTIVEC, "__builtin_altivec_mfvscr", v8hi_ftype_void, ALTIVEC_BUILTIN_MFVSCR); def_builtin (MASK_ALTIVEC, "__builtin_altivec_dssall", void_ftype_void, ALTIVEC_BUILTIN_DSSALL); - def_builtin (MASK_ALTIVEC, "__builtin_altivec_dss", void_ftype_qi, ALTIVEC_BUILTIN_DSS); + def_builtin (MASK_ALTIVEC, "__builtin_altivec_dss", void_ftype_int, ALTIVEC_BUILTIN_DSS); def_builtin (MASK_ALTIVEC, "__builtin_altivec_lvsl", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVSL); def_builtin (MASK_ALTIVEC, "__builtin_altivec_lvsr", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVSR); def_builtin (MASK_ALTIVEC, "__builtin_altivec_lvebx", v16qi_ftype_long_pcvoid, ALTIVEC_BUILTIN_LVEBX); @@ -7072,10 +7156,14 @@ altivec_init_builtins (void) 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); + /* Add the DST variants. */ d = (struct builtin_description *) bdesc_dst; for (i = 0; i < ARRAY_SIZE (bdesc_dst); i++, d++) - def_builtin (d->mask, d->name, void_ftype_pcvoid_int_char, d->code); + def_builtin (d->mask, d->name, void_ftype_pcvoid_int_int, d->code); /* Initialize the predicates. */ dp = (struct builtin_description_predicates *) bdesc_altivec_preds; @@ -7160,12 +7248,12 @@ rs6000_common_init_builtins (void) = build_function_type_list (V16QI_type_node, V16QI_type_node, V16QI_type_node, V16QI_type_node, NULL_TREE); - tree v4si_ftype_char - = build_function_type_list (V4SI_type_node, char_type_node, NULL_TREE); - tree v8hi_ftype_char - = build_function_type_list (V8HI_type_node, char_type_node, NULL_TREE); - tree v16qi_ftype_char - = build_function_type_list (V16QI_type_node, char_type_node, NULL_TREE); + tree v4si_ftype_int + = build_function_type_list (V4SI_type_node, integer_type_node, NULL_TREE); + tree v8hi_ftype_int + = build_function_type_list (V8HI_type_node, integer_type_node, NULL_TREE); + tree v16qi_ftype_int + = build_function_type_list (V16QI_type_node, integer_type_node, NULL_TREE); tree v8hi_ftype_v16qi = build_function_type_list (V8HI_type_node, V16QI_type_node, NULL_TREE); tree v4sf_ftype_v4sf @@ -7223,37 +7311,37 @@ rs6000_common_init_builtins (void) tree v4si_ftype_v4si_v4si = build_function_type_list (V4SI_type_node, V4SI_type_node, V4SI_type_node, NULL_TREE); - tree v4sf_ftype_v4si_char + tree v4sf_ftype_v4si_int = build_function_type_list (V4SF_type_node, - V4SI_type_node, char_type_node, NULL_TREE); - tree v4si_ftype_v4sf_char + V4SI_type_node, integer_type_node, NULL_TREE); + tree v4si_ftype_v4sf_int = build_function_type_list (V4SI_type_node, - V4SF_type_node, char_type_node, NULL_TREE); - tree v4si_ftype_v4si_char + V4SF_type_node, integer_type_node, NULL_TREE); + tree v4si_ftype_v4si_int = build_function_type_list (V4SI_type_node, - V4SI_type_node, char_type_node, NULL_TREE); - tree v8hi_ftype_v8hi_char + V4SI_type_node, integer_type_node, NULL_TREE); + tree v8hi_ftype_v8hi_int = build_function_type_list (V8HI_type_node, - V8HI_type_node, char_type_node, NULL_TREE); - tree v16qi_ftype_v16qi_char + V8HI_type_node, integer_type_node, NULL_TREE); + tree v16qi_ftype_v16qi_int = build_function_type_list (V16QI_type_node, - V16QI_type_node, char_type_node, NULL_TREE); - tree v16qi_ftype_v16qi_v16qi_char + V16QI_type_node, integer_type_node, NULL_TREE); + tree v16qi_ftype_v16qi_v16qi_int = build_function_type_list (V16QI_type_node, V16QI_type_node, V16QI_type_node, - char_type_node, NULL_TREE); - tree v8hi_ftype_v8hi_v8hi_char + integer_type_node, NULL_TREE); + tree v8hi_ftype_v8hi_v8hi_int = build_function_type_list (V8HI_type_node, V8HI_type_node, V8HI_type_node, - char_type_node, NULL_TREE); - tree v4si_ftype_v4si_v4si_char + integer_type_node, NULL_TREE); + tree v4si_ftype_v4si_v4si_int = build_function_type_list (V4SI_type_node, V4SI_type_node, V4SI_type_node, - char_type_node, NULL_TREE); - tree v4sf_ftype_v4sf_v4sf_char + integer_type_node, NULL_TREE); + tree v4sf_ftype_v4sf_v4sf_int = build_function_type_list (V4SF_type_node, V4SF_type_node, V4SF_type_node, - char_type_node, NULL_TREE); + integer_type_node, NULL_TREE); tree v4sf_ftype_v4sf_v4sf = build_function_type_list (V4SF_type_node, V4SF_type_node, V4SF_type_node, NULL_TREE); @@ -7396,22 +7484,22 @@ rs6000_common_init_builtins (void) /* vchar, vchar, vchar, 4 bit literal. */ else if (mode0 == V16QImode && mode1 == mode0 && mode2 == mode0 && mode3 == QImode) - type = v16qi_ftype_v16qi_v16qi_char; + type = v16qi_ftype_v16qi_v16qi_int; /* vshort, vshort, vshort, 4 bit literal. */ else if (mode0 == V8HImode && mode1 == mode0 && mode2 == mode0 && mode3 == QImode) - type = v8hi_ftype_v8hi_v8hi_char; + type = v8hi_ftype_v8hi_v8hi_int; /* vint, vint, vint, 4 bit literal. */ else if (mode0 == V4SImode && mode1 == mode0 && mode2 == mode0 && mode3 == QImode) - type = v4si_ftype_v4si_v4si_char; + type = v4si_ftype_v4si_v4si_int; /* vfloat, vfloat, vfloat, 4 bit literal. */ else if (mode0 == V4SFmode && mode1 == mode0 && mode2 == mode0 && mode3 == QImode) - type = v4sf_ftype_v4sf_v4sf_char; + type = v4sf_ftype_v4sf_v4sf_int; else abort (); @@ -7500,23 +7588,23 @@ rs6000_common_init_builtins (void) /* vint, vint, 5 bit literal. */ else if (mode0 == V4SImode && mode1 == V4SImode && mode2 == QImode) - type = v4si_ftype_v4si_char; + type = v4si_ftype_v4si_int; /* vshort, vshort, 5 bit literal. */ else if (mode0 == V8HImode && mode1 == V8HImode && mode2 == QImode) - type = v8hi_ftype_v8hi_char; + type = v8hi_ftype_v8hi_int; /* vchar, vchar, 5 bit literal. */ else if (mode0 == V16QImode && mode1 == V16QImode && mode2 == QImode) - type = v16qi_ftype_v16qi_char; + type = v16qi_ftype_v16qi_int; /* vfloat, vint, 5 bit literal. */ else if (mode0 == V4SFmode && mode1 == V4SImode && mode2 == QImode) - type = v4sf_ftype_v4si_char; + type = v4sf_ftype_v4si_int; /* vint, vfloat, 5 bit literal. */ else if (mode0 == V4SImode && mode1 == V4SFmode && mode2 == QImode) - type = v4si_ftype_v4sf_char; + type = v4si_ftype_v4sf_int; else if (mode0 == V2SImode && mode1 == SImode && mode2 == SImode) type = v2si_ftype_int_int; @@ -7569,11 +7657,11 @@ rs6000_common_init_builtins (void) mode1 = insn_data[d->icode].operand[1].mode; if (mode0 == V4SImode && mode1 == QImode) - type = v4si_ftype_char; + type = v4si_ftype_int; else if (mode0 == V8HImode && mode1 == QImode) - type = v8hi_ftype_char; + type = v8hi_ftype_int; else if (mode0 == V16QImode && mode1 == QImode) - type = v16qi_ftype_char; + type = v16qi_ftype_int; else if (mode0 == V4SFmode && mode1 == V4SFmode) type = v4sf_ftype_v4sf; else if (mode0 == V8HImode && mode1 == V16QImode) @@ -7614,11 +7702,21 @@ rs6000_init_libfuncs (void) set_conv_libfunc (ufix_optab, SImode, TFmode, "_quitrunc"); } - /* Standard AIX/Darwin/64-bit SVR4 quad floating point routines. */ - set_optab_libfunc (add_optab, TFmode, "_xlqadd"); - set_optab_libfunc (sub_optab, TFmode, "_xlqsub"); - set_optab_libfunc (smul_optab, TFmode, "_xlqmul"); - set_optab_libfunc (sdiv_optab, TFmode, "_xlqdiv"); + /* AIX/Darwin/64-bit Linux quad floating point routines. */ + if (!TARGET_XL_COMPAT) + { + set_optab_libfunc (add_optab, TFmode, "__gcc_qadd"); + set_optab_libfunc (sub_optab, TFmode, "__gcc_qsub"); + set_optab_libfunc (smul_optab, TFmode, "__gcc_qmul"); + set_optab_libfunc (sdiv_optab, TFmode, "__gcc_qdiv"); + } + else + { + set_optab_libfunc (add_optab, TFmode, "_xlqadd"); + set_optab_libfunc (sub_optab, TFmode, "_xlqsub"); + set_optab_libfunc (smul_optab, TFmode, "_xlqmul"); + set_optab_libfunc (sdiv_optab, TFmode, "_xlqdiv"); + } } else { @@ -8982,12 +9080,12 @@ print_operand (FILE *file, rtx x, int code) return; case 'D': - /* Like 'J' but get to the GT bit. */ + /* Like 'J' but get to the EQ bit. */ if (GET_CODE (x) != REG) abort (); - /* Bit 1 is GT bit. */ - i = 4 * (REGNO (x) - CR0_REGNO) + 1; + /* Bit 1 is EQ bit. */ + i = 4 * (REGNO (x) - CR0_REGNO) + 2; /* If we want bit 31, write a shift count of zero, not 32. */ fprintf (file, "%d", i == 31 ? 0 : i + 1); @@ -9182,12 +9280,12 @@ print_operand (FILE *file, rtx x, int code) case 'P': /* The operand must be an indirect memory reference. The result - is the register number. */ + is the register name. */ if (GET_CODE (x) != MEM || GET_CODE (XEXP (x, 0)) != REG || REGNO (XEXP (x, 0)) >= 32) output_operand_lossage ("invalid %%P value"); else - fprintf (file, "%d", REGNO (XEXP (x, 0))); + fprintf (file, "%s", reg_names[REGNO (XEXP (x, 0))]); return; case 'q': @@ -9659,7 +9757,7 @@ rs6000_assemble_integer (rtx x, unsigned int size, int aligned_p) { #ifdef RELOCATABLE_NEEDS_FIXUP /* Special handling for SI values. */ - if (size == 4 && aligned_p) + if (RELOCATABLE_NEEDS_FIXUP && size == 4 && aligned_p) { extern int in_toc_section (void); static int recurse = 0; @@ -9858,10 +9956,34 @@ rs6000_generate_compare (enum rtx_code code) emit_insn (cmp); } else - emit_insn (gen_rtx_SET (VOIDmode, compare_result, - gen_rtx_COMPARE (comp_mode, - rs6000_compare_op0, - rs6000_compare_op1))); + { + /* Generate XLC-compatible TFmode compare as PARALLEL with extra + CLOBBERs to match cmptf_internal2 pattern. */ + if (comp_mode == CCFPmode && TARGET_XL_COMPAT + && GET_MODE (rs6000_compare_op0) == TFmode + && (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) + && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128) + emit_insn (gen_rtx_PARALLEL (VOIDmode, + gen_rtvec (9, + gen_rtx_SET (VOIDmode, + compare_result, + gen_rtx_COMPARE (comp_mode, + rs6000_compare_op0, + rs6000_compare_op1)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode)), + gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (DFmode))))); + else + emit_insn (gen_rtx_SET (VOIDmode, compare_result, + gen_rtx_COMPARE (comp_mode, + rs6000_compare_op0, + rs6000_compare_op1))); + } /* Some kinds of FP comparisons need an OR operation; under flag_finite_math_only we don't bother. */ @@ -9929,9 +10051,9 @@ rs6000_emit_sCOND (enum rtx_code code, rtx result) abort (); if (cond_code == NE) - emit_insn (gen_e500_flip_gt_bit (t, t)); + emit_insn (gen_e500_flip_eq_bit (t, t)); - emit_insn (gen_move_from_CR_gt_bit (result, t)); + emit_insn (gen_move_from_CR_eq_bit (result, t)); return; } @@ -10112,9 +10234,9 @@ output_cbranch (rtx op, const char *label, int reversed, rtx insn) return string; } -/* Return the string to flip the GT bit on a CR. */ +/* Return the string to flip the EQ bit on a CR. */ char * -output_e500_flip_gt_bit (rtx dst, rtx src) +output_e500_flip_eq_bit (rtx dst, rtx src) { static char string[64]; int a, b; @@ -10123,9 +10245,9 @@ output_e500_flip_gt_bit (rtx dst, rtx src) || GET_CODE (src) != REG || ! CR_REGNO_P (REGNO (src))) abort (); - /* GT bit. */ - a = 4 * (REGNO (dst) - CR0_REGNO) + 1; - b = 4 * (REGNO (src) - CR0_REGNO) + 1; + /* EQ bit. */ + a = 4 * (REGNO (dst) - CR0_REGNO) + 2; + b = 4 * (REGNO (src) - CR0_REGNO) + 2; sprintf (string, "crnot %d,%d", a, b); return string; @@ -10435,22 +10557,27 @@ rs6000_split_multireg_move (rtx dst, rtx src) : gen_adddi3 (breg, breg, delta_rtx)); src = gen_rtx_MEM (mode, breg); } + else if (! offsettable_memref_p (src)) + { + rtx newsrc, basereg; + basereg = gen_rtx_REG (Pmode, reg); + emit_insn (gen_rtx_SET (VOIDmode, basereg, XEXP (src, 0))); + newsrc = gen_rtx_MEM (GET_MODE (src), basereg); + MEM_COPY_ATTRIBUTES (newsrc, src); + src = newsrc; + } - /* We have now address involving an base register only. - If we use one of the registers to address memory, - we have change that register last. */ - - breg = (GET_CODE (XEXP (src, 0)) == PLUS - ? XEXP (XEXP (src, 0), 0) - : XEXP (src, 0)); - - if (!REG_P (breg)) - abort(); + breg = XEXP (src, 0); + if (GET_CODE (breg) == PLUS || GET_CODE (breg) == LO_SUM) + breg = XEXP (breg, 0); - if (REGNO (breg) >= REGNO (dst) + /* If the base register we are using to address memory is + also a destination reg, then change that register last. */ + if (REG_P (breg) + && REGNO (breg) >= REGNO (dst) && REGNO (breg) < REGNO (dst) + nregs) j = REGNO (breg) - REGNO (dst); - } + } if (GET_CODE (dst) == MEM && INT_REGNO_P (reg)) { @@ -10482,6 +10609,8 @@ rs6000_split_multireg_move (rtx dst, rtx src) : gen_adddi3 (breg, breg, delta_rtx)); dst = gen_rtx_MEM (mode, breg); } + else if (! offsettable_memref_p (dst)) + abort (); } for (i = 0; i < nregs; i++) @@ -10491,7 +10620,7 @@ rs6000_split_multireg_move (rtx dst, rtx src) if (j == nregs) j = 0; - /* If compiler already emited move of first word by + /* If compiler already emitted move of first word by store with update, no need to do anything. */ if (j == 0 && used_update) continue; @@ -10523,7 +10652,8 @@ first_reg_to_save (void) && (! call_used_regs[first_reg] || (first_reg == RS6000_PIC_OFFSET_TABLE_REGNUM && ((DEFAULT_ABI == ABI_V4 && flag_pic != 0) - || (DEFAULT_ABI == ABI_DARWIN && flag_pic))))) + || (DEFAULT_ABI == ABI_DARWIN && flag_pic) + || (TARGET_TOC && TARGET_MINIMAL_TOC))))) break; #if TARGET_MACHO @@ -10719,6 +10849,7 @@ rs6000_stack_info (void) rs6000_stack_t *info_ptr = &info; int reg_size = TARGET_32BIT ? 4 : 8; int ehrd_size; + int save_align; HOST_WIDE_INT non_fixed_size; /* Zero all fields portably. */ @@ -10936,6 +11067,7 @@ rs6000_stack_info (void) break; } + save_align = (TARGET_ALTIVEC_ABI || DEFAULT_ABI == ABI_DARWIN) ? 16 : 8; info_ptr->save_size = RS6000_ALIGN (info_ptr->fp_size + info_ptr->gp_size + info_ptr->altivec_size @@ -10947,8 +11079,7 @@ rs6000_stack_info (void) + info_ptr->lr_size + info_ptr->vrsave_size + info_ptr->toc_size, - (TARGET_ALTIVEC_ABI || ABI_DARWIN) - ? 16 : 8); + save_align); non_fixed_size = (info_ptr->vars_size + info_ptr->parm_size @@ -11342,7 +11473,6 @@ rs6000_emit_load_toc_table (int fromprolog) rtx temp0 = (fromprolog ? gen_rtx_REG (Pmode, 0) : gen_reg_rtx (Pmode)); - rtx symF; /* possibly create the toc section */ if (! toc_initialized) @@ -11353,7 +11483,7 @@ rs6000_emit_load_toc_table (int fromprolog) if (fromprolog) { - rtx symL; + rtx symF, symL; ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); @@ -11371,14 +11501,9 @@ rs6000_emit_load_toc_table (int fromprolog) else { rtx tocsym; - static int reload_toc_labelno = 0; tocsym = gen_rtx_SYMBOL_REF (Pmode, toc_label_name); - - ASM_GENERATE_INTERNAL_LABEL (buf, "LCG", reload_toc_labelno++); - symF = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); - - emit_insn (gen_load_toc_v4_PIC_1b (tempLR, symF, tocsym)); + emit_insn (gen_load_toc_v4_PIC_1b (tempLR, tocsym)); emit_move_insn (dest, tempLR); emit_move_insn (temp0, gen_rtx_MEM (Pmode, dest)); } @@ -12007,8 +12132,10 @@ rs6000_emit_prologue (void) rtx reg, mem, vrsave; int offset; - /* Get VRSAVE onto a GPR. */ - reg = gen_rtx_REG (SImode, 12); + /* Get VRSAVE onto a GPR. Note that ABI_V4 might be using r12 + as frame_reg_rtx and r11 as the static chain pointer for + nested functions. */ + reg = gen_rtx_REG (SImode, 0); vrsave = gen_rtx_REG (SImode, VRSAVE_REGNO); if (TARGET_MACHO) emit_insn (gen_get_vrsave_internal (reg)); @@ -12117,7 +12244,10 @@ rs6000_emit_prologue (void) int i; for (i = 0; i < 32 - info->first_gp_reg_save; i++) if ((regs_ever_live[info->first_gp_reg_save+i] - && ! call_used_regs[info->first_gp_reg_save+i]) + && (! call_used_regs[info->first_gp_reg_save+i] + || (i+info->first_gp_reg_save + == RS6000_PIC_OFFSET_TABLE_REGNUM + && TARGET_TOC && TARGET_MINIMAL_TOC))) || (i+info->first_gp_reg_save == RS6000_PIC_OFFSET_TABLE_REGNUM && ((DEFAULT_ABI == ABI_V4 && flag_pic != 0) || (DEFAULT_ABI == ABI_DARWIN && flag_pic)))) @@ -12566,7 +12696,9 @@ rs6000_emit_epilogue (int sibcall) else for (i = 0; i < 32 - info->first_gp_reg_save; i++) if ((regs_ever_live[info->first_gp_reg_save+i] - && ! call_used_regs[info->first_gp_reg_save+i]) + && (! call_used_regs[info->first_gp_reg_save+i] + || (i+info->first_gp_reg_save == RS6000_PIC_OFFSET_TABLE_REGNUM + && TARGET_TOC && TARGET_MINIMAL_TOC))) || (i+info->first_gp_reg_save == RS6000_PIC_OFFSET_TABLE_REGNUM && ((DEFAULT_ABI == ABI_V4 && flag_pic != 0) || (DEFAULT_ABI == ABI_DARWIN && flag_pic)))) @@ -14845,11 +14977,117 @@ rs6000_initialize_trampoline (rtx addr, rtx fnaddr, rtx cxt) const struct attribute_spec rs6000_attribute_table[] = { /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */ + { "altivec", 1, 1, false, true, false, rs6000_handle_altivec_attribute }, { "longcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute }, { "shortcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute }, { NULL, 0, 0, false, false, false, NULL } }; +/* Handle the "altivec" attribute. The attribute may have + arguments as follows: + + __attribute__((altivec(vector__))) + __attribute__((altivec(pixel__))) (always followed by 'unsigned short') + __attribute__((altivec(bool__))) (always followed by 'unsigned') + + and may appear more than once (e.g., 'vector bool char') in a + given declaration. */ + +static tree +rs6000_handle_altivec_attribute (tree *node, tree name, tree args, + int flags ATTRIBUTE_UNUSED, + bool *no_add_attrs) +{ + tree type = *node, result = NULL_TREE; + enum machine_mode mode; + int unsigned_p; + char altivec_type + = ((args && TREE_CODE (args) == TREE_LIST && TREE_VALUE (args) + && TREE_CODE (TREE_VALUE (args)) == IDENTIFIER_NODE) + ? *IDENTIFIER_POINTER (TREE_VALUE (args)) + : '?'); + + while (POINTER_TYPE_P (type) + || TREE_CODE (type) == FUNCTION_TYPE + || TREE_CODE (type) == METHOD_TYPE + || TREE_CODE (type) == ARRAY_TYPE) + type = TREE_TYPE (type); + + mode = TYPE_MODE (type); + + if (rs6000_warn_altivec_long + && (type == long_unsigned_type_node || type == long_integer_type_node)) + warning ("use of 'long' in AltiVec types is deprecated; use 'int'"); + + switch (altivec_type) + { + case 'v': + unsigned_p = TREE_UNSIGNED (type); + switch (mode) + { + case SImode: + result = (unsigned_p ? unsigned_V4SI_type_node : V4SI_type_node); + break; + case HImode: + result = (unsigned_p ? unsigned_V8HI_type_node : V8HI_type_node); + break; + case QImode: + result = (unsigned_p ? unsigned_V16QI_type_node : V16QI_type_node); + break; + case SFmode: result = V4SF_type_node; break; + /* If the user says 'vector int bool', we may be handed the 'bool' + attribute _before_ the 'vector' attribute, and so select the proper + type in the 'b' case below. */ + case V4SImode: case V8HImode: case V16QImode: result = type; + default: break; + } + break; + case 'b': + switch (mode) + { + case SImode: case V4SImode: result = bool_V4SI_type_node; break; + case HImode: case V8HImode: result = bool_V8HI_type_node; break; + case QImode: case V16QImode: result = bool_V16QI_type_node; + default: break; + } + break; + case 'p': + switch (mode) + { + case V8HImode: result = pixel_V8HI_type_node; + default: break; + } + default: break; + } + + if (result && result != type && TYPE_READONLY (type)) + result = build_qualified_type (result, TYPE_QUAL_CONST); + + *no_add_attrs = true; /* No need to hang on to the attribute. */ + + if (!result) + warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + else + *node = reconstruct_complex_type (*node, result); + + return NULL_TREE; +} + +/* AltiVec defines four built-in scalar types that serve as vector + elements; we must teach the compiler how to mangle them. */ + +static const char * +rs6000_mangle_fundamental_type (tree type) +{ + if (type == bool_char_type_node) return "U6__boolc"; + if (type == bool_short_type_node) return "U6__bools"; + if (type == pixel_type_node) return "u7__pixel"; + if (type == bool_int_type_node) return "U6__booli"; + + /* For all other types, use normal C++ mangling. */ + return NULL; +} + /* Handle a "longcall" or "shortcall" attribute; arguments as in struct attribute_spec.handler. */ @@ -14998,6 +15236,18 @@ rs6000_elf_in_small_data_p (tree decl) if (rs6000_sdata == SDATA_NONE) return false; + /* We want to merge strings, so we never consider them small data. */ + if (TREE_CODE (decl) == STRING_CST) + return false; + + /* Functions are never in the small data area. */ + if (TREE_CODE (decl) == FUNCTION_DECL) + return false; + + /* Thread-local vars can't go in the small data area. */ + if (TREE_CODE (decl) == VAR_DECL && DECL_THREAD_LOCAL (decl)) + return false; + if (TREE_CODE (decl) == VAR_DECL && DECL_SECTION_NAME (decl)) { const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (decl)); @@ -15539,6 +15789,13 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl) } ASM_OUTPUT_LABEL (file, name); } + +static void +rs6000_elf_end_indicate_exec_stack (void) +{ + if (TARGET_32BIT) + file_end_indicate_exec_stack (); +} #endif #if TARGET_XCOFF diff --git a/contrib/gcc/config/rs6000/rs6000.h b/contrib/gcc/config/rs6000/rs6000.h index d3a66dd..f1ad896 100644 --- a/contrib/gcc/config/rs6000/rs6000.h +++ b/contrib/gcc/config/rs6000/rs6000.h @@ -258,7 +258,7 @@ extern int target_flags; #define TARGET_POWERPC64 (target_flags & MASK_POWERPC64) #endif -#define TARGET_XL_CALL 0 +#define TARGET_XL_COMPAT 0 /* Run-time compilation parameters selecting different hardware subsets. @@ -464,6 +464,9 @@ enum group_termination {"longcall", &rs6000_longcall_switch, \ N_("Avoid all range limits on call instructions"), 0}, \ {"no-longcall", &rs6000_longcall_switch, "", 0}, \ + {"warn-altivec-long", &rs6000_warn_altivec_long_switch, \ + N_("Warn about deprecated 'vector long ...' AltiVec type usage"), 0}, \ + {"no-warn-altivec-long", &rs6000_warn_altivec_long_switch, "", 0}, \ {"sched-costly-dep=", &rs6000_sched_costly_dep_str, \ N_("Determine which dependences between insns are considered costly"), 0}, \ {"insert-sched-nops=", &rs6000_sched_insert_nops_str, \ @@ -532,6 +535,9 @@ extern enum rs6000_dependence_cost rs6000_sched_costly_dep; extern const char *rs6000_sched_insert_nops_str; extern enum rs6000_nop_insertion rs6000_sched_insert_nops; +extern int rs6000_warn_altivec_long; +extern const char *rs6000_warn_altivec_long_switch; + /* Alignment options for fields in structures for sub-targets following AIX-like ABI. ALIGN_POWER word-aligns FP doubles (default AIX ABI). @@ -1165,6 +1171,9 @@ extern enum rs6000_nop_insertion rs6000_sched_insert_nops; = fixed_regs[RS6000_PIC_OFFSET_TABLE_REGNUM] \ = call_used_regs[RS6000_PIC_OFFSET_TABLE_REGNUM] \ = call_really_used_regs[RS6000_PIC_OFFSET_TABLE_REGNUM] = 1; \ + if (TARGET_TOC && TARGET_MINIMAL_TOC) \ + fixed_regs[RS6000_PIC_OFFSET_TABLE_REGNUM] \ + = call_used_regs[RS6000_PIC_OFFSET_TABLE_REGNUM] = 1; \ if (TARGET_ALTIVEC) \ global_regs[VSCR_REGNO] = 1; \ if (TARGET_SPE) \ @@ -2918,9 +2927,10 @@ enum rs6000_builtins ALTIVEC_BUILTIN_ABS_V4SI, ALTIVEC_BUILTIN_ABS_V4SF, ALTIVEC_BUILTIN_ABS_V8HI, - ALTIVEC_BUILTIN_ABS_V16QI + ALTIVEC_BUILTIN_ABS_V16QI, + ALTIVEC_BUILTIN_COMPILETIME_ERROR, /* SPE builtins. */ - , SPE_BUILTIN_EVADDW, + SPE_BUILTIN_EVADDW, SPE_BUILTIN_EVAND, SPE_BUILTIN_EVANDC, SPE_BUILTIN_EVDIVWS, diff --git a/contrib/gcc/config/rs6000/rs6000.md b/contrib/gcc/config/rs6000/rs6000.md index 0fc4c04..3b062ce 100644 --- a/contrib/gcc/config/rs6000/rs6000.md +++ b/contrib/gcc/config/rs6000/rs6000.md @@ -1,6 +1,6 @@ ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler ;; Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -;; 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +;; 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) ;; This file is part of GCC. @@ -50,7 +50,7 @@ (UNSPEC_TLSGOTTPREL 28) (UNSPEC_TLSTLS 29) (UNSPEC_FIX_TRUNC_TF 30) ; fadd, rounding towards zero - (UNSPEC_MV_CR_GT 31) ; move_from_CR_gt_bit + (UNSPEC_MV_CR_EQ 31) ; move_from_CR_eq_bit ]) ;; @@ -2404,61 +2404,6 @@ }" [(set_attr "length" "8")]) -(define_insn_and_split "*andsi3_internal7" - [(set (match_operand:CC 2 "cc_reg_operand" "=x,?y") - (compare:CC (and:SI (match_operand:SI 0 "gpc_reg_operand" "r,r") - (match_operand:SI 1 "mask_operand_wrap" "i,i")) - (const_int 0))) - (clobber (match_scratch:SI 3 "=r,r"))] - "TARGET_POWERPC64" - "#" - "TARGET_POWERPC64" - [(parallel [(set (match_dup 2) - (compare:CC (and:SI (rotate:SI (match_dup 0) (match_dup 4)) - (match_dup 5)) - (const_int 0))) - (clobber (match_dup 3))])] - " -{ - int mb = extract_MB (operands[1]); - int me = extract_ME (operands[1]); - operands[4] = GEN_INT (me + 1); - operands[5] = GEN_INT (~((HOST_WIDE_INT) -1 << (33 + me - mb))); -}" - [(set_attr "type" "delayed_compare,compare") - (set_attr "length" "4,8")]) - -(define_insn_and_split "*andsi3_internal8" - [(set (match_operand:CC 3 "cc_reg_operand" "=x,??y") - (compare:CC (and:SI (match_operand:SI 1 "gpc_reg_operand" "r,r") - (match_operand:SI 2 "mask_operand_wrap" "i,i")) - (const_int 0))) - (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") - (and:SI (match_dup 1) - (match_dup 2)))] - "TARGET_POWERPC64" - "#" - "TARGET_POWERPC64" - [(parallel [(set (match_dup 3) - (compare:CC (and:SI (rotate:SI (match_dup 1) (match_dup 4)) - (match_dup 5)) - (const_int 0))) - (set (match_dup 0) - (and:SI (rotate:SI (match_dup 1) (match_dup 4)) - (match_dup 5)))]) - (set (match_dup 0) - (rotate:SI (match_dup 0) (match_dup 6)))] - " -{ - int mb = extract_MB (operands[2]); - int me = extract_ME (operands[2]); - operands[4] = GEN_INT (me + 1); - operands[6] = GEN_INT (32 - (me + 1)); - operands[5] = GEN_INT (~((HOST_WIDE_INT) -1 << (33 + me - mb))); -}" - [(set_attr "type" "delayed_compare,compare") - (set_attr "length" "8,12")]) - (define_expand "iorsi3" [(set (match_operand:SI 0 "gpc_reg_operand" "") (ior:SI (match_operand:SI 1 "gpc_reg_operand" "") @@ -5245,16 +5190,18 @@ (define_expand "floatdisf2" [(set (match_operand:SF 0 "gpc_reg_operand" "") (float:SF (match_operand:DI 1 "gpc_reg_operand" "")))] - "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_FPRS" + "TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS" " { + rtx val = operands[1]; if (!flag_unsafe_math_optimizations) { rtx label = gen_label_rtx (); - emit_insn (gen_floatdisf2_internal2 (operands[1], label)); + val = gen_reg_rtx (DImode); + emit_insn (gen_floatdisf2_internal2 (val, operands[1], label)); emit_label (label); } - emit_insn (gen_floatdisf2_internal1 (operands[0], operands[1])); + emit_insn (gen_floatdisf2_internal1 (operands[0], val)); DONE; }") @@ -5279,30 +5226,31 @@ ;; by a bit that won't be lost at that stage, but is below the SFmode ;; rounding position. (define_expand "floatdisf2_internal2" - [(parallel [(set (match_dup 4) - (compare:CC (and:DI (match_operand:DI 0 "" "") - (const_int 2047)) - (const_int 0))) - (set (match_dup 2) (and:DI (match_dup 0) (const_int 2047))) - (clobber (match_scratch:CC 7 ""))]) - (set (match_dup 3) (ashiftrt:DI (match_dup 0) (const_int 53))) - (set (match_dup 3) (plus:DI (match_dup 3) (const_int 1))) - (set (pc) (if_then_else (eq (match_dup 4) (const_int 0)) - (label_ref (match_operand:DI 1 "" "")) - (pc))) - (set (match_dup 5) (compare:CCUNS (match_dup 3) (const_int 2))) - (set (pc) (if_then_else (ltu (match_dup 5) (const_int 0)) - (label_ref (match_dup 1)) + [(set (match_dup 3) (ashiftrt:DI (match_operand:DI 1 "" "") + (const_int 53))) + (parallel [(set (match_operand:DI 0 "" "") (and:DI (match_dup 1) + (const_int 2047))) + (clobber (scratch:CC))]) + (set (match_dup 3) (plus:DI (match_dup 3) + (const_int 1))) + (set (match_dup 0) (plus:DI (match_dup 0) + (const_int 2047))) + (set (match_dup 4) (compare:CCUNS (match_dup 3) + (const_int 3))) + (set (match_dup 0) (ior:DI (match_dup 0) + (match_dup 1))) + (parallel [(set (match_dup 0) (and:DI (match_dup 0) + (const_int -2048))) + (clobber (scratch:CC))]) + (set (pc) (if_then_else (geu (match_dup 4) (const_int 0)) + (label_ref (match_operand:DI 2 "" "")) (pc))) - (set (match_dup 0) (xor:DI (match_dup 0) (match_dup 2))) - (set (match_dup 0) (ior:DI (match_dup 0) (const_int 2048)))] - "TARGET_64BIT && TARGET_HARD_FLOAT && TARGET_FPRS" + (set (match_dup 0) (match_dup 1))] + "TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS" " { - operands[2] = gen_reg_rtx (DImode); operands[3] = gen_reg_rtx (DImode); - operands[4] = gen_reg_rtx (CCmode); - operands[5] = gen_reg_rtx (CCUNSmode); + operands[4] = gen_reg_rtx (CCUNSmode); }") ;; Define the DImode operations that can be done in a small number @@ -8311,14 +8259,36 @@ DONE; }) -(define_insn "trunctfdf2" +(define_expand "trunctfdf2" + [(set (match_operand:DF 0 "gpc_reg_operand" "") + (float_truncate:DF (match_operand:TF 1 "gpc_reg_operand" "")))] + "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) + && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128" + "") + +(define_insn_and_split "trunctfdf2_internal1" + [(set (match_operand:DF 0 "gpc_reg_operand" "=f,?f") + (float_truncate:DF (match_operand:TF 1 "gpc_reg_operand" "0,f")))] + "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) && !TARGET_XL_COMPAT + && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128" + "@ + # + fmr %0,%1" + "&& reload_completed && REGNO (operands[0]) == REGNO (operands[1])" + [(const_int 0)] +{ + emit_note (NOTE_INSN_DELETED); + DONE; +} + [(set_attr "type" "fp")]) + +(define_insn "trunctfdf2_internal2" [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (float_truncate:DF (match_operand:TF 1 "gpc_reg_operand" "f")))] - "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) + "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) && TARGET_XL_COMPAT && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128" "fadd %0,%1,%L1" - [(set_attr "type" "fp") - (set_attr "length" "4")]) + [(set_attr "type" "fp")]) (define_insn_and_split "trunctfsf2" [(set (match_operand:SF 0 "gpc_reg_operand" "=f") @@ -10081,11 +10051,10 @@ (define_insn "load_toc_v4_PIC_1b" [(set (match_operand:SI 0 "register_operand" "=l") - (match_operand:SI 1 "immediate_operand" "s")) - (use (unspec [(match_dup 1) (match_operand 2 "immediate_operand" "s")] + (unspec:SI [(match_operand:SI 1 "immediate_operand" "s")] UNSPEC_TOCPTR))] "TARGET_ELF && DEFAULT_ABI != ABI_AIX && flag_pic == 2" - "bcl 20,31,%1+4\\n%1:\\n\\t.long %2-%1" + "bcl 20,31,$+8\\n\\t.long %1-$" [(set_attr "type" "branch") (set_attr "length" "8")]) @@ -11349,11 +11318,72 @@ [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") (compare:CCFP (match_operand:TF 1 "gpc_reg_operand" "f") (match_operand:TF 2 "gpc_reg_operand" "f")))] - "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) + "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) && !TARGET_XL_COMPAT && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128" "fcmpu %0,%1,%2\;bne %0,$+8\;fcmpu %0,%L1,%L2" [(set_attr "type" "fpcompare") (set_attr "length" "12")]) + +(define_insn_and_split "*cmptf_internal2" + [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") + (compare:CCFP (match_operand:TF 1 "gpc_reg_operand" "f") + (match_operand:TF 2 "gpc_reg_operand" "f"))) + (clobber (match_scratch:DF 3 "=f")) + (clobber (match_scratch:DF 4 "=f")) + (clobber (match_scratch:DF 5 "=f")) + (clobber (match_scratch:DF 6 "=f")) + (clobber (match_scratch:DF 7 "=f")) + (clobber (match_scratch:DF 8 "=f")) + (clobber (match_scratch:DF 9 "=f")) + (clobber (match_scratch:DF 10 "=f"))] + "(DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_DARWIN) && TARGET_XL_COMPAT + && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128" + "#" + "&& reload_completed" + [(set (match_dup 3) (match_dup 13)) + (set (match_dup 4) (match_dup 14)) + (set (match_dup 9) (abs:DF (match_dup 5))) + (set (match_dup 0) (compare:CCFP (match_dup 9) (match_dup 3))) + (set (pc) (if_then_else (ne (match_dup 0) (const_int 0)) + (label_ref (match_dup 11)) + (pc))) + (set (match_dup 0) (compare:CCFP (match_dup 5) (match_dup 7))) + (set (pc) (label_ref (match_dup 12))) + (match_dup 11) + (set (match_dup 10) (minus:DF (match_dup 5) (match_dup 7))) + (set (match_dup 9) (minus:DF (match_dup 6) (match_dup 8))) + (set (match_dup 9) (plus:DF (match_dup 10) (match_dup 9))) + (set (match_dup 0) (compare:CCFP (match_dup 7) (match_dup 4))) + (match_dup 12)] +{ + REAL_VALUE_TYPE rv; + const int lo_word = FLOAT_WORDS_BIG_ENDIAN ? GET_MODE_SIZE (DFmode) : 0; + const int hi_word = FLOAT_WORDS_BIG_ENDIAN ? 0 : GET_MODE_SIZE (DFmode); + + operands[5] = simplify_gen_subreg (DFmode, operands[1], TFmode, hi_word); + operands[6] = simplify_gen_subreg (DFmode, operands[1], TFmode, lo_word); + operands[7] = simplify_gen_subreg (DFmode, operands[2], TFmode, hi_word); + operands[8] = simplify_gen_subreg (DFmode, operands[2], TFmode, lo_word); + operands[11] = gen_label_rtx (); + operands[12] = gen_label_rtx (); + real_inf (&rv); + operands[13] = force_const_mem (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (rv, DFmode)); + operands[14] = force_const_mem (DFmode, + CONST_DOUBLE_FROM_REAL_VALUE (dconst0, + DFmode)); + if (TARGET_TOC) + { + operands[13] = gen_rtx_MEM (DFmode, + create_TOC_reference (XEXP (operands[13], 0))); + operands[14] = gen_rtx_MEM (DFmode, + create_TOC_reference (XEXP (operands[14], 0))); + set_mem_alias_set (operands[13], get_TOC_alias_set ()); + set_mem_alias_set (operands[14], get_TOC_alias_set ()); + RTX_UNCHANGING_P (operands[13]) = 1; + RTX_UNCHANGING_P (operands[14]) = 1; + } +}) ;; Now we have the scc insns. We can do some combinations because of the ;; way the machine works. @@ -11376,10 +11406,10 @@ (const_string "mfcr"))) (set_attr "length" "12")]) -;; Same as above, but get the GT bit. -(define_insn "move_from_CR_gt_bit" +;; Same as above, but get the EQ bit. +(define_insn "move_from_CR_eq_bit" [(set (match_operand:SI 0 "gpc_reg_operand" "=r") - (unspec:SI [(match_operand 1 "cc_reg_operand" "y")] UNSPEC_MV_CR_GT))] + (unspec:SI [(match_operand 1 "cc_reg_operand" "y")] UNSPEC_MV_CR_EQ))] "TARGET_E500" "mfcr %0\;{rlinm|rlwinm} %0,%0,%D1,1" [(set_attr "type" "mfcr") diff --git a/contrib/gcc/config/rs6000/rtems.h b/contrib/gcc/config/rs6000/rtems.h index 0245269..d83e1eb 100644 --- a/contrib/gcc/config/rs6000/rtems.h +++ b/contrib/gcc/config/rs6000/rtems.h @@ -1,5 +1,6 @@ /* Definitions for rtems targeting a PowerPC using elf. - Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2005 + Free Software Foundation, Inc. Contributed by Joel Sherrill (joel@OARcorp.com). This file is part of GCC. @@ -27,6 +28,7 @@ { \ builtin_define_std ("PPC"); \ builtin_define ("__rtems__"); \ + builtin_define ("__USE_INIT_FINI__"); \ builtin_assert ("system=rtems"); \ builtin_assert ("cpu=powerpc"); \ builtin_assert ("machine=powerpc"); \ @@ -36,3 +38,20 @@ #undef CPP_OS_DEFAULT_SPEC #define CPP_OS_DEFAULT_SPEC "%(cpp_os_rtems)" + +#define CPP_OS_RTEMS_SPEC "\ +%{!mcpu*: %{!Dppc*: %{!Dmpc*: -Dmpc750} } }\ +%{mcpu=403: %{!Dppc*: %{!Dmpc*: -Dppc403} } } \ +%{mcpu=505: %{!Dppc*: %{!Dmpc*: -Dmpc505} } } \ +%{mcpu=601: %{!Dppc*: %{!Dmpc*: -Dppc601} } } \ +%{mcpu=602: %{!Dppc*: %{!Dmpc*: -Dppc602} } } \ +%{mcpu=603: %{!Dppc*: %{!Dmpc*: -Dppc603} } } \ +%{mcpu=603e: %{!Dppc*: %{!Dmpc*: -Dppc603e} } } \ +%{mcpu=604: %{!Dppc*: %{!Dmpc*: -Dmpc604} } } \ +%{mcpu=750: %{!Dppc*: %{!Dmpc*: -Dmpc750} } } \ +%{mcpu=821: %{!Dppc*: %{!Dmpc*: -Dmpc821} } } \ +%{mcpu=860: %{!Dppc*: %{!Dmpc*: -Dmpc860} } }" + +#undef SUBSUBTARGET_EXTRA_SPECS +#define SUBSUBTARGET_EXTRA_SPECS \ + { "cpp_os_rtems", CPP_OS_RTEMS_SPEC } diff --git a/contrib/gcc/config/rs6000/spe.h b/contrib/gcc/config/rs6000/spe.h index 1676516..878fc72 100644 --- a/contrib/gcc/config/rs6000/spe.h +++ b/contrib/gcc/config/rs6000/spe.h @@ -1088,4 +1088,23 @@ __ev_set_spefscr_frmc (int rnd) __builtin_spe_mtspefscr (i); } +/* The SPE PIM says these are declared in <spe.h>, although they are + not provided by GCC: they must be taken from a separate + library. */ +extern short int atosfix16 (const char *); +extern int atosfix32 (const char *); +extern long long atosfix64 (const char *); + +extern unsigned short atoufix16 (const char *); +extern unsigned int atoufix32 (const char *); +extern unsigned long long atoufix64 (const char *); + +extern short int strtosfix16 (const char *, char **); +extern int strtosfix32 (const char *, char **); +extern long long strtosfix64 (const char *, char **); + +extern unsigned short int strtoufix16 (const char *, char **); +extern unsigned int strtoufix32 (const char *, char **); +extern unsigned long long strtoufix64 (const char *, char **); + #endif /* _SPE_H */ diff --git a/contrib/gcc/config/rs6000/spe.md b/contrib/gcc/config/rs6000/spe.md index 5eb6302..306accd 100644 --- a/contrib/gcc/config/rs6000/spe.md +++ b/contrib/gcc/config/rs6000/spe.md @@ -2458,14 +2458,14 @@ ;; FP comparison stuff. ;; Flip the GT bit. -(define_insn "e500_flip_gt_bit" +(define_insn "e500_flip_eq_bit" [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") (unspec:CCFP [(match_operand:CCFP 1 "cc_reg_operand" "y")] 999))] "!TARGET_FPRS && TARGET_HARD_FLOAT" "* { - return output_e500_flip_gt_bit (operands[0], operands[1]); + return output_e500_flip_eq_bit (operands[0], operands[1]); }" [(set_attr "type" "cr_logical")]) diff --git a/contrib/gcc/config/rs6000/sysv4.h b/contrib/gcc/config/rs6000/sysv4.h index ea149f0..57af869 100644 --- a/contrib/gcc/config/rs6000/sysv4.h +++ b/contrib/gcc/config/rs6000/sysv4.h @@ -1086,7 +1086,7 @@ extern int fixuplabelno; #define LINK_START_FREEBSD_SPEC "" #define LINK_OS_FREEBSD_SPEC "\ - %{p:%e`-p' not supported; use `-pg' and gprof(1)} \ + %{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \ %{Wl,*:%*} \ %{v:-V} \ %{assert*} %{R*} %{rpath*} %{defsym*} \ @@ -1115,8 +1115,9 @@ extern int fixuplabelno; %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" #endif -#define ENDFILE_LINUX_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} \ -%{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s}" +#define ENDFILE_LINUX_SPEC "\ +%{shared|pie:crtendS.o%s;:crtend.o%s} \ +%{mnewlib:ecrtn.o%s;:crtn.o%s}" #define LINK_START_LINUX_SPEC "" @@ -1358,4 +1359,4 @@ ncrtn.o%s" #define DOUBLE_INT_ASM_OP "\t.quad\t" /* Generate entries in .fixup for relocatable addresses. */ -#define RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP 1 diff --git a/contrib/gcc/config/rs6000/t-aix43 b/contrib/gcc/config/rs6000/t-aix43 index a716209..8c2592f 100644 --- a/contrib/gcc/config/rs6000/t-aix43 +++ b/contrib/gcc/config/rs6000/t-aix43 @@ -58,9 +58,12 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(DESTDIR)$$(slibdir)/ SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac` SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_NM_FLAGS = -Bpg -X32_64 +# GCC 128-bit long double support routines. +LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble.c + # Either 32-bit and 64-bit objects in archives. AR_FLAGS_FOR_TARGET = -X32_64 diff --git a/contrib/gcc/config/rs6000/t-aix52 b/contrib/gcc/config/rs6000/t-aix52 index bddcdb1..839bd0a 100644 --- a/contrib/gcc/config/rs6000/t-aix52 +++ b/contrib/gcc/config/rs6000/t-aix52 @@ -39,9 +39,12 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(DESTDIR)$$(slibdir)/ SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac` SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_NM_FLAGS = -Bpg -X32_64 +# GCC 128-bit long double support routines. +LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble.c + # Either 32-bit and 64-bit objects in archives. AR_FLAGS_FOR_TARGET = -X32_64 diff --git a/contrib/gcc/config/rs6000/t-linux64 b/contrib/gcc/config/rs6000/t-linux64 index 77ba93e..6d1e6f4 100644 --- a/contrib/gcc/config/rs6000/t-linux64 +++ b/contrib/gcc/config/rs6000/t-linux64 @@ -1,8 +1,9 @@ #rs6000/t-linux64 -LIB2FUNCS_EXTRA = tramp.S $(srcdir)/config/rs6000/ppc64-fp.c \ - $(srcdir)/config/rs6000/darwin-ldouble.c +LIB2FUNCS_EXTRA = tramp.S $(srcdir)/config/rs6000/ppc64-fp.c +LIB2FUNCS_STATIC_EXTRA = eabi.S $(srcdir)/config/rs6000/darwin-ldouble.c +LIB2FUNCS_SHARED_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble-shared.c TARGET_LIBGCC2_CFLAGS = -mno-minimal-toc -fPIC -specs=bispecs diff --git a/contrib/gcc/config/rs6000/t-newas b/contrib/gcc/config/rs6000/t-newas index a26ce39..d5d03a1 100644 --- a/contrib/gcc/config/rs6000/t-newas +++ b/contrib/gcc/config/rs6000/t-newas @@ -27,6 +27,9 @@ MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) \ mcpu?powerpc=mpowerpc-gpopt \ mcpu?powerpc=mpowerpc-gfxopt +# GCC 128-bit long double support routines. +LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble.c + # Aix 3.2.x needs milli.exp for -mcpu=common EXTRA_PARTS = milli.exp milli.exp: $(srcdir)/config/rs6000/milli.exp diff --git a/contrib/gcc/config/rs6000/t-rtems b/contrib/gcc/config/rs6000/t-rtems index 364a22d..05d9a26 100644 --- a/contrib/gcc/config/rs6000/t-rtems +++ b/contrib/gcc/config/rs6000/t-rtems @@ -33,6 +33,7 @@ MULTILIB_MATCHES = ${MULTILIB_MATCHES_ENDIAN} \ # Cpu-variants supporting new exception processing only MULTILIB_NEW_EXCEPTIONS_ONLY = \ +*mcpu=505*/*D_OLD_EXCEPTIONS* \ *mcpu=604*/*D_OLD_EXCEPTIONS* \ *mcpu=750*/*D_OLD_EXCEPTIONS* \ *mcpu=821*/*D_OLD_EXCEPTIONS* \ |