]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/config/rs6000/altivec.h
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / config / rs6000 / altivec.h
index f1387c0c89880d7f2053df08d5b589fcca330b45..7b397997dd380f5dd4cd9bff8401847c6a0220b9 100644 (file)
@@ -1,30 +1,28 @@
 /* PowerPC AltiVec include file.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
    Contributed by Aldy Hernandez (aldyh@redhat.com).
+   Rewritten by Paolo Bonzini (bonzini@gnu.org).
 
-This file is part of GNU CC.
+   This file is part of GCC.
 
-GNU CC 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.
+   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 3, or (at your
+   option) any later version.
 
-GNU CC 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.
+   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 GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
 
-/* As a special exception, if you include this header file into source
-   files compiled by GCC, this header file does not by itself cause
-   the resulting executable to be covered by the GNU General Public
-   License.  This exception does not however invalidate any other
-   reasons why the executable file might be covered by the GNU General
-   Public License.  */
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
 
 /* Implemented to conform to the specification included in the AltiVec
    Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0).  */
@@ -32,48 +30,30 @@ Boston, MA 02111-1307, USA.  */
 #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++ compatability.  */
+#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.  */
-
+/* Synonyms.  */
 #define vec_vaddcuw vec_addc
 #define vec_vand vec_and
 #define vec_vandc vec_andc
@@ -116,8423 +96,382 @@ extern int __altivec_link_error_invalid_argument ();
 #define vec_vrfiz vec_trunc
 #define vec_vxor vec_xor
 
-#ifdef __cplusplus
-
-/* 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));
-
-/* vec_abs */
-
-inline vector signed char
-vec_abs (vector signed char a1)
-{
-  return __builtin_altivec_abs_v16qi (a1);
-}
-
-inline vector signed short
-vec_abs (vector signed short a1)
-{
-  return __builtin_altivec_abs_v8hi (a1);
-}
-
-inline vector signed int
-vec_abs (vector signed int a1)
-{
-  return __builtin_altivec_abs_v4si (a1);
-}
-
-inline vector float
-vec_abs (vector float a1)
-{
-  return __builtin_altivec_abs_v4sf (a1);
-}
-
-/* vec_abss */
-
-inline vector signed char
-vec_abss (vector signed char a1)
-{
-  return __builtin_altivec_abss_v16qi (a1);
-}
-
-inline vector signed short
-vec_abss (vector signed short a1)
-{
-  return __builtin_altivec_abss_v8hi (a1);
-}
-
-inline vector signed int
-vec_abss (vector signed int a1)
-{
-  return __builtin_altivec_abss_v4si (a1);
-}
-
-/* vec_add */
-
-inline vector signed char
-vec_add (vector 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 signed 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 signed 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 signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_add (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_add (vector unsigned short a1, vector 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 unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_add (vector 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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_add (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_add (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vaddfp */
-
-inline vector float
-vec_vaddfp (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vadduwm */
-
-inline vector signed int
-vec_vadduwm (vector 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)
-{
-  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 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 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)
-{
-  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)
-{
-  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 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 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)
-{
-  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)
-{
-  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)
-{
-  return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_addc */
-
-inline vector unsigned int
-vec_addc (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_adds */
-
-inline vector unsigned char
-vec_adds (vector signed 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 signed 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 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 signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_adds (vector unsigned short a1, vector signed short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_adds (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed short
-vec_adds (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned int
-vec_adds (vector signed int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_adds (vector unsigned int a1, vector 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 unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_adds (vector 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)
-{
-  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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vadduws (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vaddshs */
-inline vector signed short
-vec_vaddshs (vector 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)
-{
-  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)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vaddsbs */
-
-inline vector signed char
-vec_vaddsbs (vector 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)
-{
-  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)
-{
-  return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_and */
-
-inline vector float
-vec_and (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_and (vector float a1, vector 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)
-{
-  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)
-{
-  return (vector signed 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)
-{
-  return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_and (vector unsigned int a1, vector signed int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_and (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_and (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_and (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_and (vector unsigned short a1, vector signed 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 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 signed 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 signed char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_and (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_andc */
-
-inline vector float
-vec_andc (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_andc (vector float a1, vector signed int a2)
-{
-  return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_andc (vector signed int a1, vector float a2)
-{
-  return (vector float) __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 signed 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 signed int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_andc (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_andc (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_andc (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_andc (vector unsigned short a1, vector signed short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_andc (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_andc (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_andc (vector signed char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_andc (vector unsigned char a1, vector signed char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_andc (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_avg */
-
-inline vector unsigned char
-vec_avg (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed char
-vec_avg (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned short
-vec_avg (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed short
-vec_avg (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned int
-vec_avg (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_avg (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vavgsw */
-
-inline vector signed int
-vec_vavgsw (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vavguw */
-
-inline vector unsigned int
-vec_vavguw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vavgsh */
-
-inline vector signed short
-vec_vavgsh (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vavguh */
-
-inline vector unsigned short
-vec_vavguh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vavgsb */
+/* Functions that are resolved by the backend to one of the
+   typed builtins.  */
+#define vec_vaddfp __builtin_vec_vaddfp
+#define vec_addc __builtin_vec_addc
+#define vec_vaddsws __builtin_vec_vaddsws
+#define vec_vaddshs __builtin_vec_vaddshs
+#define vec_vaddsbs __builtin_vec_vaddsbs
+#define vec_vavgsw __builtin_vec_vavgsw
+#define vec_vavguw __builtin_vec_vavguw
+#define vec_vavgsh __builtin_vec_vavgsh
+#define vec_vavguh __builtin_vec_vavguh
+#define vec_vavgsb __builtin_vec_vavgsb
+#define vec_vavgub __builtin_vec_vavgub
+#define vec_ceil __builtin_vec_ceil
+#define vec_cmpb __builtin_vec_cmpb
+#define vec_vcmpeqfp __builtin_vec_vcmpeqfp
+#define vec_cmpge __builtin_vec_cmpge
+#define vec_vcmpgtfp __builtin_vec_vcmpgtfp
+#define vec_vcmpgtsw __builtin_vec_vcmpgtsw
+#define vec_vcmpgtuw __builtin_vec_vcmpgtuw
+#define vec_vcmpgtsh __builtin_vec_vcmpgtsh
+#define vec_vcmpgtuh __builtin_vec_vcmpgtuh
+#define vec_vcmpgtsb __builtin_vec_vcmpgtsb
+#define vec_vcmpgtub __builtin_vec_vcmpgtub
+#define vec_vcfsx __builtin_vec_vcfsx
+#define vec_vcfux __builtin_vec_vcfux
+#define vec_cts __builtin_vec_cts
+#define vec_ctu __builtin_vec_ctu
+#define vec_expte __builtin_vec_expte
+#define vec_floor __builtin_vec_floor
+#define vec_loge __builtin_vec_loge
+#define vec_madd __builtin_vec_madd
+#define vec_madds __builtin_vec_madds
+#define vec_mtvscr __builtin_vec_mtvscr
+#define vec_vmaxfp __builtin_vec_vmaxfp
+#define vec_vmaxsw __builtin_vec_vmaxsw
+#define vec_vmaxsh __builtin_vec_vmaxsh
+#define vec_vmaxsb __builtin_vec_vmaxsb
+#define vec_vminfp __builtin_vec_vminfp
+#define vec_vminsw __builtin_vec_vminsw
+#define vec_vminsh __builtin_vec_vminsh
+#define vec_vminsb __builtin_vec_vminsb
+#define vec_mradds __builtin_vec_mradds
+#define vec_vmsumshm __builtin_vec_vmsumshm
+#define vec_vmsumuhm __builtin_vec_vmsumuhm
+#define vec_vmsummbm __builtin_vec_vmsummbm
+#define vec_vmsumubm __builtin_vec_vmsumubm
+#define vec_vmsumshs __builtin_vec_vmsumshs
+#define vec_vmsumuhs __builtin_vec_vmsumuhs
+#define vec_vmulesb __builtin_vec_vmulesb
+#define vec_vmulesh __builtin_vec_vmulesh
+#define vec_vmuleuh __builtin_vec_vmuleuh
+#define vec_vmuleub __builtin_vec_vmuleub
+#define vec_vmulosh __builtin_vec_vmulosh
+#define vec_vmulouh __builtin_vec_vmulouh
+#define vec_vmulosb __builtin_vec_vmulosb
+#define vec_vmuloub __builtin_vec_vmuloub
+#define vec_nmsub __builtin_vec_nmsub
+#define vec_packpx __builtin_vec_packpx
+#define vec_vpkswss __builtin_vec_vpkswss
+#define vec_vpkuwus __builtin_vec_vpkuwus
+#define vec_vpkshss __builtin_vec_vpkshss
+#define vec_vpkuhus __builtin_vec_vpkuhus
+#define vec_vpkswus __builtin_vec_vpkswus
+#define vec_vpkshus __builtin_vec_vpkshus
+#define vec_re __builtin_vec_re
+#define vec_round __builtin_vec_round
+#define vec_rsqrte __builtin_vec_rsqrte
+#define vec_vsubfp __builtin_vec_vsubfp
+#define vec_subc __builtin_vec_subc
+#define vec_vsubsws __builtin_vec_vsubsws
+#define vec_vsubshs __builtin_vec_vsubshs
+#define vec_vsubsbs __builtin_vec_vsubsbs
+#define vec_sum4s __builtin_vec_sum4s
+#define vec_vsum4shs __builtin_vec_vsum4shs
+#define vec_vsum4sbs __builtin_vec_vsum4sbs
+#define vec_vsum4ubs __builtin_vec_vsum4ubs
+#define vec_sum2s __builtin_vec_sum2s
+#define vec_sums __builtin_vec_sums
+#define vec_trunc __builtin_vec_trunc
+#define vec_vupkhpx __builtin_vec_vupkhpx
+#define vec_vupkhsh __builtin_vec_vupkhsh
+#define vec_vupkhsb __builtin_vec_vupkhsb
+#define vec_vupklpx __builtin_vec_vupklpx
+#define vec_vupklsh __builtin_vec_vupklsh
+#define vec_vupklsb __builtin_vec_vupklsb
+#define vec_abs __builtin_vec_abs
+#define vec_abss __builtin_vec_abss
+#define vec_add __builtin_vec_add
+#define vec_adds __builtin_vec_adds
+#define vec_and __builtin_vec_and
+#define vec_andc __builtin_vec_andc
+#define vec_avg __builtin_vec_avg
+#define vec_cmpeq __builtin_vec_cmpeq
+#define vec_cmpgt __builtin_vec_cmpgt
+#define vec_ctf __builtin_vec_ctf
+#define vec_dst __builtin_vec_dst
+#define vec_dstst __builtin_vec_dstst
+#define vec_dststt __builtin_vec_dststt
+#define vec_dstt __builtin_vec_dstt
+#define vec_ld __builtin_vec_ld
+#define vec_lde __builtin_vec_lde
+#define vec_ldl __builtin_vec_ldl
+#define vec_lvebx __builtin_vec_lvebx
+#define vec_lvehx __builtin_vec_lvehx
+#define vec_lvewx __builtin_vec_lvewx
+/* Cell only intrinsics.  */
+#ifdef __PPU__
+#define vec_lvlx __builtin_vec_lvlx
+#define vec_lvlxl __builtin_vec_lvlxl
+#define vec_lvrx __builtin_vec_lvrx
+#define vec_lvrxl __builtin_vec_lvrxl
+#endif
+#define vec_lvsl __builtin_vec_lvsl
+#define vec_lvsr __builtin_vec_lvsr
+#define vec_max __builtin_vec_max
+#define vec_mergeh __builtin_vec_mergeh
+#define vec_mergel __builtin_vec_mergel
+#define vec_min __builtin_vec_min
+#define vec_mladd __builtin_vec_mladd
+#define vec_msum __builtin_vec_msum
+#define vec_msums __builtin_vec_msums
+#define vec_mule __builtin_vec_mule
+#define vec_mulo __builtin_vec_mulo
+#define vec_nor __builtin_vec_nor
+#define vec_or __builtin_vec_or
+#define vec_pack __builtin_vec_pack
+#define vec_packs __builtin_vec_packs
+#define vec_packsu __builtin_vec_packsu
+#define vec_perm __builtin_vec_perm
+#define vec_rl __builtin_vec_rl
+#define vec_sel __builtin_vec_sel
+#define vec_sl __builtin_vec_sl
+#define vec_sld __builtin_vec_sld
+#define vec_sll __builtin_vec_sll
+#define vec_slo __builtin_vec_slo
+#define vec_splat __builtin_vec_splat
+#define vec_sr __builtin_vec_sr
+#define vec_sra __builtin_vec_sra
+#define vec_srl __builtin_vec_srl
+#define vec_sro __builtin_vec_sro
+#define vec_st __builtin_vec_st
+#define vec_ste __builtin_vec_ste
+#define vec_stl __builtin_vec_stl
+#define vec_stvebx __builtin_vec_stvebx
+#define vec_stvehx __builtin_vec_stvehx
+#define vec_stvewx __builtin_vec_stvewx
+/* Cell only intrinsics.  */
+#ifdef __PPU__
+#define vec_stvlx __builtin_vec_stvlx
+#define vec_stvlxl __builtin_vec_stvlxl
+#define vec_stvrx __builtin_vec_stvrx
+#define vec_stvrxl __builtin_vec_stvrxl
+#endif
+#define vec_sub __builtin_vec_sub
+#define vec_subs __builtin_vec_subs
+#define vec_sum __builtin_vec_sum
+#define vec_unpackh __builtin_vec_unpackh
+#define vec_unpackl __builtin_vec_unpackl
+#define vec_vaddubm __builtin_vec_vaddubm
+#define vec_vaddubs __builtin_vec_vaddubs
+#define vec_vadduhm __builtin_vec_vadduhm
+#define vec_vadduhs __builtin_vec_vadduhs
+#define vec_vadduwm __builtin_vec_vadduwm
+#define vec_vadduws __builtin_vec_vadduws
+#define vec_vcmpequb __builtin_vec_vcmpequb
+#define vec_vcmpequh __builtin_vec_vcmpequh
+#define vec_vcmpequw __builtin_vec_vcmpequw
+#define vec_vmaxub __builtin_vec_vmaxub
+#define vec_vmaxuh __builtin_vec_vmaxuh
+#define vec_vmaxuw __builtin_vec_vmaxuw
+#define vec_vminub __builtin_vec_vminub
+#define vec_vminuh __builtin_vec_vminuh
+#define vec_vminuw __builtin_vec_vminuw
+#define vec_vmrghb __builtin_vec_vmrghb
+#define vec_vmrghh __builtin_vec_vmrghh
+#define vec_vmrghw __builtin_vec_vmrghw
+#define vec_vmrglb __builtin_vec_vmrglb
+#define vec_vmrglh __builtin_vec_vmrglh
+#define vec_vmrglw __builtin_vec_vmrglw
+#define vec_vpkuhum __builtin_vec_vpkuhum
+#define vec_vpkuwum __builtin_vec_vpkuwum
+#define vec_vrlb __builtin_vec_vrlb
+#define vec_vrlh __builtin_vec_vrlh
+#define vec_vrlw __builtin_vec_vrlw
+#define vec_vslb __builtin_vec_vslb
+#define vec_vslh __builtin_vec_vslh
+#define vec_vslw __builtin_vec_vslw
+#define vec_vspltb __builtin_vec_vspltb
+#define vec_vsplth __builtin_vec_vsplth
+#define vec_vspltw __builtin_vec_vspltw
+#define vec_vsrab __builtin_vec_vsrab
+#define vec_vsrah __builtin_vec_vsrah
+#define vec_vsraw __builtin_vec_vsraw
+#define vec_vsrb __builtin_vec_vsrb
+#define vec_vsrh __builtin_vec_vsrh
+#define vec_vsrw __builtin_vec_vsrw
+#define vec_vsububs __builtin_vec_vsububs
+#define vec_vsububm __builtin_vec_vsububm
+#define vec_vsubuhm __builtin_vec_vsubuhm
+#define vec_vsubuhs __builtin_vec_vsubuhs
+#define vec_vsubuwm __builtin_vec_vsubuwm
+#define vec_vsubuws __builtin_vec_vsubuws
+#define vec_xor __builtin_vec_xor
+
+#define vec_extract __builtin_vec_extract
+#define vec_insert __builtin_vec_insert
+#define vec_splats __builtin_vec_splats
+#define vec_promote __builtin_vec_promote
+
+/* Predicates.
+   For C++, we use templates in order to allow non-parenthesized arguments.
+   For C, instead, we use macros since non-parenthesized arguments were
+   not allowed even in older GCC implementation of AltiVec.
+
+   In the future, we may add more magic to the back-end, so that no
+   one- or two-argument macros are used.  */
+
+#ifdef __cplusplus__
+#define __altivec_unary_pred(NAME, CALL) \
+template <class T> int NAME (T a1) { return CALL; }
+
+#define __altivec_scalar_pred(NAME, CALL) \
+template <class T, class U> int NAME (T a1, U a2) { return CALL; }
+
+/* Given the vec_step of a type, return the corresponding bool type.  */
+template <int STEP> class __altivec_bool_ret { };
+template <> class __altivec_bool_ret <4> {
+  typedef __vector __bool int __ret;
+};
+template <> class __altivec_bool_ret <8> {
+  typedef __vector __bool short __ret;
+};
+template <> class __altivec_bool_ret <16> {
+  typedef __vector __bool char __ret;
+};
 
-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);
-}
+/* Be very liberal in the pairs we accept.  Mistakes such as passing
+   a `vector char' and `vector short' will be caught by the middle-end,
+   while any attempt to detect them here would produce hard to understand
+   error messages involving the implementation details of AltiVec.  */
+#define __altivec_binary_pred(NAME, CALL) \
+template <class T, class U> \
+typename __altivec_bool_ret <vec_step (T)>::__ret \
+NAME (T a1, U a2) \
+{ \
+  return CALL; \
+}
+
+__altivec_binary_pred(vec_cmplt,
+  __builtin_vec_cmpgt (a2, a1))
+__altivec_binary_pred(vec_cmple,
+  __builtin_vec_cmpge (a2, a1))
+
+__altivec_scalar_pred(vec_all_in,
+  __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2))
+__altivec_scalar_pred(vec_any_out,
+  __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2))
+
+__altivec_unary_pred(vec_all_nan,
+  __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1))
+__altivec_unary_pred(vec_any_nan,
+  __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1))
+
+__altivec_unary_pred(vec_all_numeric,
+  __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1))
+__altivec_unary_pred(vec_any_numeric,
+  __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1))
+
+__altivec_scalar_pred(vec_all_eq,
+  __builtin_vec_vcmpeq_p (__CR6_LT, a1, a2))
+__altivec_scalar_pred(vec_all_ne,
+  __builtin_vec_vcmpeq_p (__CR6_EQ, a1, a2))
+__altivec_scalar_pred(vec_any_eq,
+  __builtin_vec_vcmpeq_p (__CR6_EQ_REV, a1, a2))
+__altivec_scalar_pred(vec_any_ne,
+  __builtin_vec_vcmpeq_p (__CR6_LT_REV, a1, a2))
+
+__altivec_scalar_pred(vec_all_gt,
+  __builtin_vec_vcmpgt_p (__CR6_LT, a1, a2))
+__altivec_scalar_pred(vec_all_lt,
+  __builtin_vec_vcmpgt_p (__CR6_LT, a2, a1))
+__altivec_scalar_pred(vec_any_gt,
+  __builtin_vec_vcmpgt_p (__CR6_EQ_REV, a1, a2))
+__altivec_scalar_pred(vec_any_lt,
+  __builtin_vec_vcmpgt_p (__CR6_EQ_REV, a2, a1))
+
+__altivec_scalar_pred(vec_all_ngt,
+  __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2))
+__altivec_scalar_pred(vec_all_nlt,
+  __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1))
+__altivec_scalar_pred(vec_any_ngt,
+  __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2))
+__altivec_scalar_pred(vec_any_nlt,
+  __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1))
+
+/* __builtin_vec_vcmpge_p is vcmpgefp for floating-point vector types,
+   while for integer types it is converted to __builtin_vec_vcmpgt_p,
+   with inverted args and condition code.  */
+__altivec_scalar_pred(vec_all_le,
+  __builtin_vec_vcmpge_p (__CR6_LT, a2, a1))
+__altivec_scalar_pred(vec_all_ge,
+  __builtin_vec_vcmpge_p (__CR6_LT, a1, a2))
+__altivec_scalar_pred(vec_any_le,
+  __builtin_vec_vcmpge_p (__CR6_EQ_REV, a2, a1))
+__altivec_scalar_pred(vec_any_ge,
+  __builtin_vec_vcmpge_p (__CR6_EQ_REV, a1, a2))
+
+__altivec_scalar_pred(vec_all_nge,
+  __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2))
+__altivec_scalar_pred(vec_all_nle,
+  __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1))
+__altivec_scalar_pred(vec_any_nge,
+  __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2))
+__altivec_scalar_pred(vec_any_nle,
+  __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1))
+
+#undef __altivec_scalar_pred
+#undef __altivec_unary_pred
+#undef __altivec_binary_pred
+#else
+#define vec_cmplt(a1, a2) __builtin_vec_cmpgt ((a2), (a1))
+#define vec_cmple(a1, a2) __builtin_vec_cmpge ((a2), (a1))
 
-/* vec_vavgub */
+#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
+#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
 
-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);
-}
+#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
+#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (a1), (a1))
 
-/* vec_ceil */
+#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1))
+#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
 
-inline vector float
-vec_ceil (vector float a1)
-{
-  return (vector float) __builtin_altivec_vrfip ((vector float) a1);
-}
+#define vec_all_eq(a1, a2) __builtin_vec_vcmpeq_p (__CR6_LT, (a1), (a2))
+#define vec_all_ne(a1, a2) __builtin_vec_vcmpeq_p (__CR6_EQ, (a1), (a2))
+#define vec_any_eq(a1, a2) __builtin_vec_vcmpeq_p (__CR6_EQ_REV, (a1), (a2))
+#define vec_any_ne(a1, a2) __builtin_vec_vcmpeq_p (__CR6_LT_REV, (a1), (a2))
 
-/* vec_cmpb */
+#define vec_all_gt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_LT, (a1), (a2))
+#define vec_all_lt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_LT, (a2), (a1))
+#define vec_any_gt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_EQ_REV, (a1), (a2))
+#define vec_any_lt(a1, a2) __builtin_vec_vcmpgt_p (__CR6_EQ_REV, (a2), (a1))
 
-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);
-}
+#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
+#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
+#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
+#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
 
-/* vec_cmpeq */
+/* __builtin_vec_vcmpge_p is vcmpgefp for floating-point vector types,
+   while for integer types it is converted to __builtin_vec_vcmpgt_p,
+   with inverted args and condition code.  */
+#define vec_all_le(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT, (a2), (a1))
+#define vec_all_ge(a1, a2) __builtin_vec_vcmpge_p (__CR6_LT, (a1), (a2))
+#define vec_any_le(a1, a2) __builtin_vec_vcmpge_p (__CR6_EQ_REV, (a2), (a1))
+#define vec_any_ge(a1, a2) __builtin_vec_vcmpge_p (__CR6_EQ_REV, (a1), (a2))
 
-inline vector signed 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);
-}
-
-inline vector signed 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);
-}
-
-inline vector signed 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);
-}
-
-inline vector signed 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);
-}
-
-inline vector signed 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);
-}
-
-inline vector signed 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);
-}
-
-inline vector signed int
-vec_cmpeq (vector float a1, vector float a2)
-{
-  return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vcmpeqfp */
-
-inline vector signed int
-vec_vcmpeqfp (vector float a1, vector float a2)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_cmpgt (vector float a1, vector float a2)
-{
-  return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vcmpgtfp */
-
-inline vector signed int
-vec_vcmpgtfp (vector float a1, vector float a2)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed 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)
-{
-  return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_cmplt */
-
-inline vector signed char
-vec_cmplt (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed char
-vec_cmplt (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_cmplt (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed short
-vec_cmplt (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_cmplt (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_cmplt (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_cmplt (vector float a1, vector float a2)
-{
-  return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_ctf */
-
-inline vector float
-vec_ctf (vector unsigned int a1, const char a2)
-{
-  return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
-}
-
-inline vector float
-vec_ctf (vector signed int a1, const char 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)
-{
-  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)
-{
-  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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
-}
-
-/* vec_dss */
-
-inline void
-vec_dss (const char a1)
-{
-  __builtin_altivec_dss (a1);
-}
-
-/* vec_dssall */
-
-inline void
-vec_dssall ()
-{
-  __builtin_altivec_dssall ();
-}
-
-/* vec_dst */
-
-inline void
-vec_dst (vector unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (vector signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (vector unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (vector signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (vector unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (vector signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (vector float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (unsigned long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (signed long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dst (float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dst ((void *) a1, a2, a3);
-}
-
-/* vec_dstst */
-
-inline void
-vec_dstst (vector unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (vector signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (vector unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (vector signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (vector unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (vector signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (vector float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (unsigned long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (signed long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstst (float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstst ((void *) a1, a2, a3);
-}
-
-/* vec_dststt */
-
-inline void
-vec_dststt (vector unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (vector signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (vector unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (vector signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (vector unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (vector signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (vector float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (unsigned long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (signed long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dststt (float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dststt ((void *) a1, a2, a3);
-}
-
-/* vec_dstt */
-
-inline void
-vec_dstt (vector unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (vector signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (vector unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (vector signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (vector unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (vector signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (vector float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (unsigned char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (signed char *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (unsigned short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (signed short *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (unsigned int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (signed int *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (unsigned long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (signed long *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-inline void
-vec_dstt (float *a1, int a2, const char a3)
-{
-  __builtin_altivec_dstt ((void *) a1, a2, a3);
-}
-
-/* vec_expte */
-
-inline vector float
-vec_expte (vector float a1)
-{
-  return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
-}
-
-/* vec_floor */
-
-inline vector float
-vec_floor (vector float a1)
-{
-  return (vector float) __builtin_altivec_vrfim ((vector float) a1);
-}
-
-/* vec_ld */
-
-inline vector float
-vec_ld (int a1, vector float *a2)
-{
-  return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector float
-vec_ld (int a1, float *a2)
-{
-  return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_ld (int a1, vector signed int *a2)
-{
-  return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_ld (int a1, signed int *a2)
-{
-  return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_ld (int a1, signed long *a2)
-{
-  return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_ld (int a1, vector unsigned int *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_ld (int a1, unsigned int *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_ld (int a1, unsigned long *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed short
-vec_ld (int a1, vector signed short *a2)
-{
-  return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed short
-vec_ld (int a1, signed short *a2)
-{
-  return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned short
-vec_ld (int a1, vector unsigned short *a2)
-{
-  return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned short
-vec_ld (int a1, unsigned short *a2)
-{
-  return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed char
-vec_ld (int a1, vector signed char *a2)
-{
-  return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector signed char
-vec_ld (int a1, signed char *a2)
-{
-  return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_ld (int a1, vector unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_ld (int a1, 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)
-{
-  return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lde (int a1, unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
-}
-
-inline vector signed short
-vec_lde (int a1, signed short *a2)
-{
-  return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
-}
-
-inline vector unsigned short
-vec_lde (int a1, unsigned short *a2)
-{
-  return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
-}
-
-inline vector float
-vec_lde (int a1, float *a2)
-{
-  return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_lde (int a1, signed int *a2)
-{
-  return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_lde (int a1, unsigned int *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_lde (int a1, signed long *a2)
-{
-  return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_lde (int a1, unsigned long *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-/* vec_lvewx */
-
-inline vector float
-vec_lvewx (int a1, float *a2)
-{
-  return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_lvewx (int a1, signed int *a2)
-{
-  return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_lvewx (int a1, unsigned int *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_lvewx (int a1, signed long *a2)
-{
-  return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_lvewx (int a1, unsigned long *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
-}
-
-/* vec_lvehx */
-
-inline vector signed short
-vec_lvehx (int a1, signed short *a2)
-{
-  return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
-}
-
-inline vector unsigned short
-vec_lvehx (int a1, unsigned short *a2)
-{
-  return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
-}
-
-/* vec_lvebx */
-
-inline vector signed char
-vec_lvebx (int a1, signed char *a2)
-{
-  return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvebx (int a1, unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
-}
-
-/* vec_ldl */
-
-inline vector float
-vec_ldl (int a1, vector float *a2)
-{
-  return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector float
-vec_ldl (int a1, float *a2)
-{
-  return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_ldl (int a1, vector signed int *a2)
-{
-  return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_ldl (int a1, signed int *a2)
-{
-  return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed int
-vec_ldl (int a1, signed long *a2)
-{
-  return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_ldl (int a1, vector unsigned int *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_ldl (int a1, unsigned int *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned int
-vec_ldl (int a1, unsigned long *a2)
-{
-  return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed short
-vec_ldl (int a1, vector signed short *a2)
-{
-  return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed short
-vec_ldl (int a1, signed short *a2)
-{
-  return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned short
-vec_ldl (int a1, vector unsigned short *a2)
-{
-  return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned short
-vec_ldl (int a1, unsigned short *a2)
-{
-  return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed char
-vec_ldl (int a1, vector signed char *a2)
-{
-  return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector signed char
-vec_ldl (int a1, signed char *a2)
-{
-  return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_ldl (int a1, vector unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_ldl (int a1, unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
-}
-
-/* vec_loge */
-
-inline vector float
-vec_loge (vector float a1)
-{
-  return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
-}
-
-/* vec_lvsl */
-
-inline vector unsigned char
-vec_lvsl (int a1, unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, signed char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, unsigned short *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, signed short *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, unsigned int *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, signed int *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, unsigned long *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, signed long *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsl (int a1, float *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
-}
-
-/* vec_lvsr */
-
-inline vector unsigned char
-vec_lvsr (int a1, unsigned char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, signed char *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, unsigned short *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, signed short *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, unsigned int *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, signed int *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, unsigned long *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, signed long *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-inline vector unsigned char
-vec_lvsr (int a1, float *a2)
-{
-  return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
-}
-
-/* vec_madd */
-
-inline vector float
-vec_madd (vector float a1, vector float a2, vector float a3)
-{
-  return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
-}
-
-
-/* vec_madds */
-
-inline vector signed short
-vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
-{
-  return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
-}
-
-/* vec_max */
-
-inline vector unsigned char
-vec_max (vector signed 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 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)
-{
-  return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed char
-vec_max (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned short
-vec_max (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_max (vector unsigned short a1, vector 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)
-{
-  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)
-{
-  return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned int
-vec_max (vector signed int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_max (vector unsigned int a1, vector signed int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_max (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_max (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_max (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vmaxfp */
-
-inline vector float
-vec_vmaxfp (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vmaxsw */
-
-inline vector signed int
-vec_vmaxsw (vector 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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vmaxsh */
-
-inline vector signed short
-vec_vmaxsh (vector 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)
-{
-  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)
-{
-  return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmaxsb */
-
-inline vector signed char
-vec_vmaxsb (vector 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)
-{
-  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)
-{
-  return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_mergeh */
-
-inline vector 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 signed short
-vec_mergeh (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_mergeh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector float
-vec_mergeh (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_mergeh (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_mergeh (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vmrghw */
-
-inline vector float
-vec_vmrghw (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_vmrghw (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vmrghh */
-
-inline vector signed short
-vec_vmrghh (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmrghb */
-
-inline vector signed char
-vec_vmrghb (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_mergel */
-
-inline vector 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 signed short
-vec_mergel (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_mergel (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector float
-vec_mergel (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_mergel (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_mergel (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vmrglw */
-
-inline vector float
-vec_vmrglw (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_vmrglw (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vmrglh */
-
-inline vector signed short
-vec_vmrglh (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmrglb */
-
-inline vector signed char
-vec_vmrglb (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_mfvscr */
-
-inline vector unsigned short
-vec_mfvscr ()
-{
-  return (vector unsigned short) __builtin_altivec_mfvscr ();
-}
-
-/* vec_min */
-
-inline vector unsigned char
-vec_min (vector signed 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 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)
-{
-  return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed char
-vec_min (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned short
-vec_min (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_min (vector unsigned short a1, vector 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)
-{
-  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)
-{
-  return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned int
-vec_min (vector signed int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_min (vector unsigned int a1, vector signed int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_min (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_min (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_min (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vminfp */
-
-inline vector float
-vec_vminfp (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vminsw */
-
-inline vector signed int
-vec_vminsw (vector 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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vminuw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vminsh */
-
-inline vector signed short
-vec_vminsh (vector 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)
-{
-  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)
-{
-  return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vminuh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vminsb */
-
-inline vector signed char
-vec_vminsb (vector 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)
-{
-  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)
-{
-  return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vminub (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_mladd */
-
-inline vector signed short
-vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
-{
-  return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
-}
-
-inline vector signed short
-vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
-{
-  return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
-}
-
-inline vector signed short
-vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
-{
-  return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
-}
-
-inline vector unsigned short
-vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
-{
-  return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
-}
-
-/* vec_mradds */
-
-inline vector signed short
-vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
-{
-  return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
-}
-
-/* vec_msum */
-
-inline vector unsigned int
-vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
-}
-
-inline vector signed int
-vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
-{
-  return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
-}
-
-inline vector unsigned int
-vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-inline vector signed int
-vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
-{
-  return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-/* vec_vmsumshm */
-
-inline vector signed int
-vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
-{
-  return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-/* vec_vmsumuhm */
-
-inline vector unsigned int
-vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-/* vec_vmsummbm */
-
-inline vector signed int
-vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
-{
-  return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
-}
-
-/* vec_vmsumubm */
-
-inline vector unsigned int
-vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
-}
-
-/* vec_msums */
-
-inline vector unsigned int
-vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-inline vector signed int
-vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
-{
-  return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-/* vec_vmsumshs */
-
-inline vector signed int
-vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
-{
-  return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-/* vec_vmsumuhs */
-
-inline vector unsigned int
-vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
-}
-
-/* vec_mtvscr */
-
-inline void
-vec_mtvscr (vector signed int a1)
-{
-  __builtin_altivec_mtvscr ((vector signed int) a1);
-}
-
-inline void
-vec_mtvscr (vector unsigned int a1)
-{
-  __builtin_altivec_mtvscr ((vector signed int) a1);
-}
-
-inline void
-vec_mtvscr (vector signed short a1)
-{
-  __builtin_altivec_mtvscr ((vector signed int) a1);
-}
-
-inline void
-vec_mtvscr (vector unsigned short a1)
-{
-  __builtin_altivec_mtvscr ((vector signed int) a1);
-}
-
-inline void
-vec_mtvscr (vector signed char a1)
-{
-  __builtin_altivec_mtvscr ((vector signed int) a1);
-}
-
-inline void
-vec_mtvscr (vector unsigned char a1)
-{
-  __builtin_altivec_mtvscr ((vector signed int) a1);
-}
-
-/* vec_mule */
-
-inline vector unsigned short
-vec_mule (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_mule (vector signed char a1, vector signed char a2)
-{
-  return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned int
-vec_mule (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_mule (vector signed short a1, vector signed short a2)
-{
-  return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmulesh */
-
-inline vector signed int
-vec_vmulesh (vector signed short a1, vector signed short a2)
-{
-  return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmuleuh */
-
-inline vector unsigned int
-vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmuleub */
-inline vector unsigned short
-vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_mulo */
-
-inline vector unsigned short
-vec_mulo (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_mulo (vector signed char a1, vector signed char a2)
-{
-  return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned int
-vec_mulo (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_mulo (vector signed short a1, vector signed short a2)
-{
-  return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmulosh */
-
-inline vector signed int
-vec_vmulosh (vector signed short a1, vector signed short a2)
-{
-  return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmulouh */
-
-inline vector unsigned int
-vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vmulosb */
-
-inline vector signed short
-vec_vmulosb (vector signed char a1, vector signed char a2)
-{
-  return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_vmuloub */
-
-inline vector unsigned short
-vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_nmsub */
-
-inline vector float
-vec_nmsub (vector float a1, vector float a2, vector float a3)
-{
-  return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
-}
-
-/* vec_nor */
-
-inline vector float
-vec_nor (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_nor (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_nor (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_nor (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_nor (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_nor (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_nor (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_or */
-
-inline vector float
-vec_or (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_or (vector float a1, vector signed int a2)
-{
-  return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_or (vector signed int a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_or (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_or (vector signed int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_or (vector unsigned int a1, vector 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)
-{
-  return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_or (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_or (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_or (vector unsigned short a1, vector signed short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_or (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_or (vector 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 signed 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 signed char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_or (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_pack */
-
-inline vector signed char
-vec_pack (vector signed short a1, vector signed short a2)
-{
-  return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned char
-vec_pack (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed short
-vec_pack (vector signed int a1, vector signed int a2)
-{
-  return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_pack (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkuwum */
-
-inline vector signed short
-vec_vpkuwum (vector signed int a1, vector signed int a2)
-{
-  return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkuhum */
-
-inline vector signed char
-vec_vpkuhum (vector signed short a1, vector signed short a2)
-{
-  return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned char
-vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_packpx */
-
-inline vector unsigned short
-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);
-}
-
-/* vec_packs */
-
-inline vector unsigned char
-vec_packs (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed char
-vec_packs (vector signed short a1, vector signed short a2)
-{
-  return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_packs (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_packs (vector signed int a1, vector signed int a2)
-{
-  return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkswss */
-
-inline vector signed short
-vec_vpkswss (vector signed int a1, vector signed int a2)
-{
-  return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkuwus */
-
-inline vector unsigned short
-vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkshss */
-
-inline vector signed char
-vec_vpkshss (vector signed short a1, vector signed short a2)
-{
-  return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vpkuhus */
-
-inline vector unsigned char
-vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_packsu */
-
-inline vector unsigned char
-vec_packsu (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned char
-vec_packsu (vector signed short a1, vector signed short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_packsu (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_packsu (vector signed int a1, vector signed int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkswus */
-
-inline vector unsigned short
-vec_vpkswus (vector signed int a1, vector signed int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vpkshus */
-
-inline vector unsigned char
-vec_vpkshus (vector signed short a1, vector signed short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_perm */
-
-inline vector float
-vec_perm (vector float a1, vector float a2, vector unsigned char a3)
-{
-  return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-inline vector signed int
-vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
-{
-  return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-inline vector unsigned int
-vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
-{
-  return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-inline vector signed short
-vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
-{
-  return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-inline vector unsigned short
-vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
-{
-  return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-inline vector signed char
-vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
-{
-  return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-inline vector unsigned char
-vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
-{
-  return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
-}
-
-/* vec_re */
-
-inline vector float
-vec_re (vector float a1)
-{
-  return (vector float) __builtin_altivec_vrefp ((vector float) a1);
-}
-
-/* vec_rl */
-
-inline vector signed char
-vec_rl (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_rl (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_rl (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_rl (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_rl (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_rl (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vrlw */
-
-inline vector signed int
-vec_vrlw (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vrlw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vrlh */
-
-inline vector signed short
-vec_vrlh (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vrlh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vrlb */
-
-inline vector signed char
-vec_vrlb (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vrlb (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_round */
-
-inline vector float
-vec_round (vector float a1)
-{
-  return (vector float) __builtin_altivec_vrfin ((vector float) a1);
-}
-
-/* vec_rsqrte */
-
-inline vector float
-vec_rsqrte (vector float a1)
-{
-  return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
-}
-
-/* vec_sel */
-
-inline vector float
-vec_sel (vector float a1, vector float a2, vector signed 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 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 unsigned int a3)
-{
-  return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector unsigned int
-vec_sel (vector unsigned int a1, vector unsigned int a2, vector 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 unsigned int a3)
-{
-  return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector signed short
-vec_sel (vector signed short a1, vector signed short a2, vector signed short a3)
-{
-  return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector signed short
-vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
-{
-  return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector unsigned short
-vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
-{
-  return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector unsigned short
-vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
-{
-  return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector signed char
-vec_sel (vector signed char a1, vector signed char a2, vector signed char a3)
-{
-  return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector signed char
-vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
-{
-  return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
-}
-
-inline vector unsigned char
-vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed 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);
-}
-
-/* vec_sl */
-
-inline vector signed char
-vec_sl (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_sl (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_sl (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_sl (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_sl (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sl (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vslw */
-
-inline vector signed int
-vec_vslw (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vslw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vslh */
-
-inline vector signed short
-vec_vslh (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vslh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vslb */
-
-inline vector signed char
-vec_vslb (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vslb (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_sld */
-
-inline vector float
-vec_sld (vector float a1, vector float a2, const char 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 char 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 char a3)
-{
-  return (vector unsigned 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 char a3)
-{
-  return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
-}
-
-inline vector unsigned short
-vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3)
-{
-  return (vector unsigned short) __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)
-{
-  return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
-}
-
-inline vector unsigned char
-vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3)
-{
-  return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
-}
-
-/* vec_sll */
-
-inline vector signed int
-vec_sll (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_sll (vector signed int a1, vector unsigned short a2)
-{
-  return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_sll (vector signed int a1, vector unsigned char a2)
-{
-  return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sll (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sll (vector unsigned int a1, vector unsigned short a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sll (vector unsigned int a1, vector unsigned char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_sll (vector signed short a1, vector unsigned int a2)
-{
-  return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_sll (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_sll (vector signed short a1, vector unsigned char a2)
-{
-  return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_sll (vector unsigned short a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_sll (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_sll (vector unsigned short a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_sll (vector signed char a1, vector unsigned int a2)
-{
-  return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_sll (vector signed char a1, vector unsigned short a2)
-{
-  return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_sll (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_sll (vector unsigned char a1, vector unsigned int a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_sll (vector unsigned char a1, vector unsigned short a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_sll (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_slo */
-
-inline vector float
-vec_slo (vector float a1, vector signed char a2)
-{
-  return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_slo (vector float a1, vector unsigned char a2)
-{
-  return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_slo (vector signed int a1, vector signed char a2)
-{
-  return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_slo (vector signed int a1, vector unsigned char a2)
-{
-  return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_slo (vector unsigned int a1, vector signed char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_slo (vector unsigned int a1, vector unsigned char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_slo (vector signed short a1, vector signed char a2)
-{
-  return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_slo (vector signed short a1, vector unsigned char a2)
-{
-  return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_slo (vector unsigned short a1, vector signed char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_slo (vector unsigned short a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_slo (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_slo (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_slo (vector unsigned char a1, vector signed char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_slo (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_splat */
-
-inline vector signed char
-vec_splat (vector signed char a1, const char 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)
-{
-  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)
-{
-  return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
-}
-
-inline vector unsigned short
-vec_splat (vector unsigned short a1, const char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
-}
-
-inline vector float
-vec_splat (vector float a1, const char a2)
-{
-  return (vector float) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
-}
-
-inline vector signed int
-vec_splat (vector signed int a1, const char a2)
-{
-  return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
-}
-
-inline vector unsigned int
-vec_splat (vector unsigned int a1, const char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
-}
-
-/* vec_vspltw */
-
-inline vector float
-vec_vspltw (vector float a1, const char 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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
-}
-
-/* vec_vsplth */
-
-inline vector signed short
-vec_vsplth (vector signed short a1, const char 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)
-{
-  return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
-}
-
-/* vec_vspltb */
-
-inline vector signed char
-vec_vspltb (vector signed char a1, const char 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)
-{
-  return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
-}
-
-/* vec_splat_s8 */
-
-inline vector signed char
-vec_splat_s8 (const char a1)
-{
-  return (vector signed char) __builtin_altivec_vspltisb (a1);
-}
-
-/* vec_splat_s16 */
-
-inline vector signed short
-vec_splat_s16 (const char a1)
-{
-  return (vector signed short) __builtin_altivec_vspltish (a1);
-}
-
-/* vec_splat_s32 */
-
-inline vector signed int
-vec_splat_s32 (const char a1)
-{
-  return (vector signed int) __builtin_altivec_vspltisw (a1);
-}
-
-/* vec_splat_u8 */
-
-inline vector unsigned char
-vec_splat_u8 (const char a1)
-{
-  return (vector unsigned char) __builtin_altivec_vspltisb (a1);
-}
-
-/* vec_splat_u16 */
-
-inline vector unsigned short
-vec_splat_u16 (const char a1)
-{
-  return (vector unsigned short) __builtin_altivec_vspltish (a1);
-}
-
-/* vec_splat_u32 */
-
-inline vector unsigned int
-vec_splat_u32 (const char a1)
-{
-  return (vector unsigned int) __builtin_altivec_vspltisw (a1);
-}
-
-/* vec_sr */
-
-inline vector signed char
-vec_sr (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_sr (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_sr (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_sr (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_sr (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sr (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vsrw */
-
-inline vector signed int
-vec_vsrw (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vsrw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vsrh */
-
-inline vector signed short
-vec_vsrh (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vsrh (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vsrb */
-
-inline vector signed char
-vec_vsrb (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vsrb (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_sra */
-
-inline vector signed char
-vec_sra (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_sra (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector signed short
-vec_sra (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_sra (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_sra (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sra (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vsraw */
-
-inline vector signed int
-vec_vsraw (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vsraw (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vsrah */
-
-inline vector signed short
-vec_vsrah (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vsrah (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vsrab */
-
-inline vector signed char
-vec_vsrab (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vsrab (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_srl */
-
-inline vector signed int
-vec_srl (vector signed int a1, vector unsigned int a2)
-{
-  return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_srl (vector signed int a1, vector unsigned short a2)
-{
-  return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_srl (vector signed int a1, vector unsigned char a2)
-{
-  return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_srl (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_srl (vector unsigned int a1, vector unsigned short a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_srl (vector unsigned int a1, vector unsigned char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_srl (vector signed short a1, vector unsigned int a2)
-{
-  return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_srl (vector signed short a1, vector unsigned short a2)
-{
-  return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_srl (vector signed short a1, vector unsigned char a2)
-{
-  return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_srl (vector unsigned short a1, vector unsigned int a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_srl (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_srl (vector unsigned short a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector 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);
-}
-
-/* vec_sro */
-
-inline vector float
-vec_sro (vector float a1, vector signed char a2)
-{
-  return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_sro (vector float a1, vector unsigned char a2)
-{
-  return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_sro (vector signed int a1, vector signed char a2)
-{
-  return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_sro (vector signed int a1, vector unsigned char a2)
-{
-  return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sro (vector unsigned int a1, vector signed char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sro (vector unsigned int a1, vector unsigned char a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_sro (vector signed short a1, vector signed char a2)
-{
-  return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed short
-vec_sro (vector signed short a1, vector unsigned char a2)
-{
-  return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_sro (vector unsigned short a1, vector signed char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_sro (vector unsigned short a1, vector unsigned char a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_sro (vector signed char a1, vector signed char a2)
-{
-  return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_sro (vector signed char a1, vector unsigned char a2)
-{
-  return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_sro (vector unsigned char a1, vector signed char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned char
-vec_sro (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_st */
-
-inline void
-vec_st (vector float a1, int a2, void *a3)
-{
-  __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_st (vector signed int a1, int 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)
-{
-  __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_st (vector signed short a1, int 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)
-{
-  __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_st (vector signed char a1, int 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)
-{
-  __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
-}
-
-/* vec_ste */
-
-inline void
-vec_ste (vector signed char a1, int a2, void *a3)
-{
-  __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
-}
-
-inline void
-vec_ste (vector unsigned char a1, int a2, void *a3)
-{
-  __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
-}
-
-inline void
-vec_ste (vector signed short a1, int 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)
-{
-  __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
-}
-
-inline void
-vec_ste (vector float a1, int 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)
-{
-  __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_ste (vector unsigned int a1, int a2, void *a3)
-{
-  __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
-}
-
-/* vec_stvewx */
-
-inline void
-vec_stvewx (vector float a1, int 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)
-{
-  __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_stvewx (vector unsigned int a1, int a2, void *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)
-{
-  __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
-}
-
-inline void
-vec_stvehx (vector unsigned short a1, int a2, void *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)
-{
-  __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
-}
-
-inline void
-vec_stvebx (vector unsigned char a1, int 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)
-{
-  __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_stl (vector signed int a1, int 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)
-{
-  __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_stl (vector signed short a1, int 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)
-{
-  __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
-}
-
-inline void
-vec_stl (vector signed char a1, int 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)
-{
-  __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)
-{
-  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)
-{
-  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 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)
-{
-  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)
-{
-  return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_sub (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_sub (vector unsigned short a1, vector signed short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_sub (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed int
-vec_sub (vector 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 signed 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 signed int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_sub (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_sub (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vsubfp */
-
-inline vector float
-vec_vsubfp (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
-}
-
-/* vec_vsubuwm */
-
-inline vector signed int
-vec_vsubuwm (vector 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)
-{
-  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 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 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)
-{
-  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)
-{
-  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)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vsububm */
-
-inline vector signed char
-vec_vsububm (vector 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)
-{
-  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)
-{
-  return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vsububm (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_subc */
-
-inline vector unsigned int
-vec_subc (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_subs */
-
-inline vector unsigned char
-vec_subs (vector signed char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_subs (vector unsigned char a1, vector 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)
-{
-  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)
-{
-  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)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_subs (vector unsigned short a1, vector signed short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_subs (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector signed short
-vec_subs (vector signed short a1, vector signed short a2)
-{
-  return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned int
-vec_subs (vector signed 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 signed 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 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)
-{
-  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)
-{
-  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)
-{
-  return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_vsubshs */
-
-inline vector signed short
-vec_vsubshs (vector 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)
-{
-  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)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vsubuhs */
-
-inline vector unsigned short
-vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-inline vector unsigned short
-vec_vsubsuhs (vector unsigned 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_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
-}
-
-/* vec_vsubsbs */
-
-inline vector signed char
-vec_vsubsbs (vector 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_vsubsubs (vector signed char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
-}
-
-inline vector unsigned char
-vec_vsubsubs (vector unsigned 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_vsubsubs (vector unsigned char a1, vector unsigned char a2)
-{
-  return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
-}
-
-/* vec_sum4s */
-
-inline vector unsigned int
-vec_sum4s (vector unsigned char a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_sum4s (vector signed char a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_sum4s (vector signed short a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
-}
-
-/* vec_vsum4shs */
-
-inline vector signed int
-vec_vsum4shss (vector signed short a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
-}
-
-/* vec_vsum4sbs */
-
-inline vector signed int
-vec_vsum4sbs (vector signed char a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
-}
-
-/* vec_vsum4ubs */
-
-inline vector unsigned int
-vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
-}
-
-/* vec_sum2s */
-
-inline vector signed int
-vec_sum2s (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_sums */
-
-inline vector signed int
-vec_sums (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2);
-}
-
-/* vec_trunc */
-
-inline vector float
-vec_trunc (vector float a1)
-{
-  return (vector float) __builtin_altivec_vrfiz ((vector float) a1);
-}
-
-/* vec_unpackh */
-
-inline vector signed short
-vec_unpackh (vector signed char a1)
-{
-  return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
-}
-
-inline vector signed int
-vec_unpackh (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)
-{
-  return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
-}
-
-/* vec_vupkhsh */
-
-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)
-{
-  return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
-}
-
-/* vec_vupkhsb */
-
-inline vector signed short
-vec_vupkhsb (vector signed char a1)
-{
-  return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
-}
-
-/* vec_unpackl */
-
-inline vector signed short
-vec_unpackl (vector signed char a1)
-{
-  return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
-}
-
-inline vector unsigned int
-vec_unpackl (vector unsigned short a1)
-{
-  return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
-}
-
-inline vector signed int
-vec_unpackl (vector signed short a1)
-{
-  return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
-}
-
-/* vec_vupklpx */
-
-inline vector unsigned int
-vec_vupklpx (vector unsigned 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)
-{
-  return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
-}
-
-/* vec_vupklsb */
-
-inline vector signed short
-vec_vupklsb (vector signed char a1)
-{
-  return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
-}
-
-/* vec_xor */
-
-inline vector float
-vec_xor (vector float a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_xor (vector float a1, vector signed int a2)
-{
-  return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector float
-vec_xor (vector signed int a1, vector float a2)
-{
-  return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed int
-vec_xor (vector signed int a1, vector signed int a2)
-{
-  return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_xor (vector signed int a1, vector unsigned int a2)
-{
-  return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned int
-vec_xor (vector unsigned int a1, vector 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)
-{
-  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)
-{
-  return (vector signed 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)
-{
-  return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_xor (vector unsigned short a1, vector signed short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector unsigned short
-vec_xor (vector unsigned short a1, vector unsigned short a2)
-{
-  return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
-}
-
-inline vector signed char
-vec_xor (vector 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 signed 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 signed 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)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
-}
-
-inline int
-vec_all_eq (vector signed char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
-}
-
-inline int
-vec_all_eq (vector unsigned char a1, vector 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)
-{
-  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)
-{
-  return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_all_eq (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_all_eq (vector unsigned short a1, vector 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)
-{
-  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)
-{
-  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 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 unsigned int a2)
-{
-  return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_eq (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
-}
-
-/* vec_all_ge */
-
-inline int
-vec_all_ge (vector signed 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 signed 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 signed char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
-}
-
-inline int
-vec_all_ge (vector signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_ge (vector unsigned short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_ge (vector unsigned short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_ge (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_ge (vector signed int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_ge (vector unsigned int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_ge (vector unsigned int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_ge (vector signed int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_ge (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2);
-}
-
-/* vec_all_gt */
-
-inline int
-vec_all_gt (vector signed 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 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 unsigned char a2)
-{
-  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_all_gt (vector signed char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_all_gt (vector signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_all_gt (vector unsigned short a1, vector 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)
-{
-  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)
-{
-  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)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_gt (vector unsigned int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_gt (vector unsigned int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_gt (vector signed int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_gt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
-}
-
-/* vec_all_in */
-
-inline int
-vec_all_in (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
-}
-
-/* vec_all_le */
-
-inline int
-vec_all_le (vector signed 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 signed 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 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 short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_all_le (vector unsigned short a1, vector 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)
-{
-  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 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)
-{
-  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 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)
-{
-  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)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_le (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
-}
-
-/* vec_all_lt */
-
-inline int
-vec_all_lt (vector signed 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 signed 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 signed char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
-}
-
-inline int
-vec_all_lt (vector signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_lt (vector unsigned short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_lt (vector unsigned short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_lt (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_all_lt (vector signed int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_lt (vector unsigned int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_lt (vector unsigned int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_lt (vector signed int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_all_lt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
-}
-
-/* vec_all_nan */
-
-inline int
-vec_all_nan (vector float a1)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
-}
-
-/* vec_all_ne */
-
-inline int
-vec_all_ne (vector signed char a1, vector unsigned char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_all_ne (vector signed char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_all_ne (vector unsigned char a1, vector 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)
-{
-  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)
-{
-  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_all_ne (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_all_ne (vector unsigned short a1, vector 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)
-{
-  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)
-{
-  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 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 unsigned int a2)
-{
-  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_all_ne (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
-}
-
-/* vec_all_nge */
-
-inline int
-vec_all_nge (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
-}
-
-/* vec_all_ngt */
-
-inline int
-vec_all_ngt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
-}
-
-/* vec_all_nle */
-
-inline int
-vec_all_nle (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
-}
-
-/* vec_all_nlt */
-
-inline int
-vec_all_nlt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
-}
-
-/* vec_all_numeric */
-
-inline int
-vec_all_numeric (vector float a1)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
-}
-
-/* vec_any_eq */
-
-inline int
-vec_any_eq (vector signed char a1, vector unsigned char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_eq (vector 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)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_eq (vector unsigned char a1, vector unsigned char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_eq (vector signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_eq (vector 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 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)
-{
-  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)
-{
-  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 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 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 float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
-}
-
-/* vec_any_ge */
-
-inline int
-vec_any_ge (vector signed char a1, vector 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 unsigned char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
-}
-
-inline int
-vec_any_ge (vector unsigned 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 signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_ge (vector unsigned short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_ge (vector unsigned short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_ge (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_ge (vector signed int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_ge (vector unsigned 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 unsigned int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_ge (vector signed int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_ge (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
-}
-
-/* vec_any_gt */
-
-inline int
-vec_any_gt (vector signed char a1, vector unsigned char a2)
-{
-  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_gt (vector unsigned char a1, vector 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)
-{
-  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)
-{
-  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)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_gt (vector unsigned short a1, vector 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 unsigned short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_gt (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_gt (vector signed 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 signed 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 signed int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_any_gt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
-}
-
-/* vec_any_le */
-
-inline int
-vec_any_le (vector signed 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 signed 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 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 signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_le (vector unsigned short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_le (vector unsigned short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_le (vector 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 int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_any_le (vector unsigned int a1, vector 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)
-{
-  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 signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
-}
-
-inline int
-vec_any_le (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1);
-}
-
-/* vec_any_lt */
-
-inline int
-vec_any_lt (vector signed 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 signed 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 signed char a1, vector signed char a2)
-{
-  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
-}
-
-inline int
-vec_any_lt (vector signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_lt (vector unsigned short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_lt (vector unsigned short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_lt (vector signed short a1, vector signed short a2)
-{
-  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
-}
-
-inline int
-vec_any_lt (vector signed int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_lt (vector unsigned int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_lt (vector unsigned int a1, vector unsigned int a2)
-{
-  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_lt (vector signed int a1, vector signed int a2)
-{
-  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
-}
-
-inline int
-vec_any_lt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
-}
-
-/* vec_any_nan */
-
-inline int
-vec_any_nan (vector float a1)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
-}
-
-/* vec_any_ne */
-
-inline int
-vec_any_ne (vector signed char a1, vector unsigned char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_ne (vector 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)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_ne (vector unsigned char a1, vector unsigned char a2)
-{
-  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
-}
-
-inline int
-vec_any_ne (vector signed short a1, vector unsigned short a2)
-{
-  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
-}
-
-inline int
-vec_any_ne (vector 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 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)
-{
-  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)
-{
-  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 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 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 float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
-}
-
-/* vec_any_nge */
-
-inline int
-vec_any_nge (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
-}
-
-/* vec_any_ngt */
-
-inline int
-vec_any_ngt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
-}
-
-/* vec_any_nle */
-
-inline int
-vec_any_nle (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
-}
-
-/* vec_any_nlt */
-
-inline int
-vec_any_nlt (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
-}
-
-/* vec_any_numeric */
-
-inline int
-vec_any_numeric (vector float a1)
-{
-  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
-}
-
-/* vec_any_out */
-
-inline int
-vec_any_out (vector float a1, vector float a2)
-{
-  return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
-}
-
-/* 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 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 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 float>
-{
-  static const int _S_elem = 4;
-};
-
-#define vec_step(t)  __vec_step_help<typeof(t)>::_S_elem
-
-#else /* not C++ */
-
-/* "... and so I think no man in a century will suffer as greatly as
-   you will."  */
-
-#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 ()))))
-
-#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 ())))))))
-
-#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 ()))))
-
-#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 ()))))
-
-#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 ()))))
-
-#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 ())
-
-#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 ())))))))))))))
-
-#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 ())
-
-#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 ()))))))))))))
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())))))))))))))))
-
-#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 ())))))))))))))))))))))))
-
-#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 ()))))))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
-
-#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
-
-#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 ())))))))
-
-#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 ())
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))
-
-#define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
-
-#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 ())))))))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
-
-#define vec_cmplt(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 ())))))))
-
-#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 ()))))
-
-#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 ()))
-
-#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 ()))
-
-#define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
-
-#define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2))
-
-#define vec_dss(a1) __builtin_altivec_dss ((a1))
+#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
+#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
+#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
+#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
+#endif
 
+/* These do not accept vectors, so they do not have a __builtin_vec_*
+   counterpart.  */
+#define vec_dss(x) __builtin_altivec_dss((x))
 #define vec_dssall() __builtin_altivec_dssall ()
-
-#define vec_dst(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
-      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-  __altivec_link_error_invalid_argument ()))))))))))))))))
-
-#define vec_dstst(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
-      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-  __altivec_link_error_invalid_argument ()))))))))))))))))
-
-#define vec_dststt(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
-      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-  __altivec_link_error_invalid_argument ()))))))))))))))))
-
-#define vec_dstt(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
-      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-  __altivec_link_error_invalid_argument ()))))))))))))))))
-
-#define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
-
-#define vec_floor(a1) __builtin_altivec_vrfim (a1)
-
-#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 ()))))))))))))))))
-
-#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 ())))))))))
-
-#define vec_lvewx(a, b) \
-__ch (__un_args_eq (unsigned int, *(b)), \
-      ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (signed int, *(b)), \
-      ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (unsigned long, *(b)), \
-      ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (signed long, *(b)), \
-      ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (float, *(b)), \
-      ((vector float) __builtin_altivec_lvewx ((a), (b))), \
-__altivec_link_error_invalid_argument ())))))
-
-#define vec_lvehx(a, b) \
-__ch (__un_args_eq (unsigned short, *(b)), \
-      ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
-__ch (__un_args_eq (signed short, *(b)), \
-      ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
-__altivec_link_error_invalid_argument ()))
-
-#define vec_lvebx(a, b) \
-__ch (__un_args_eq (unsigned char, *(b)), \
-      ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
-__ch (__un_args_eq (signed char, *(b)), \
-      ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
-__altivec_link_error_invalid_argument ()))
-
-#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))
-
-#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 ())))))))))
-
-#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))
-
-#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 ())))))))))))))
-
-#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 ())
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())))))))
-
-#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 ())))
-
-#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 ()))
-
-#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 ()))
-
-#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 ())))))))
-
-#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 ())))
-
-#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 ()))
-
-#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 ()))
-
-#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 ())))))))))))))
-
-#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 ())
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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))
-
-#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 ()))))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ()))
-
-#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 ())
-
-#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 ())
-
-#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 ()))))))
-
-#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 ()))))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ()))))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())))))))
-
-#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 ())))))))))))))))
-
-#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 ()))))
-
-#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 ()))
-
-#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 ()))
-
-#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 ())
-
-#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 ()))))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ()))))
-
-#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 ())
-
-#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 ())
-
-#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))
-
-#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 ()))))))
-
-#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 ()))
-
-#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 ()))
-
-#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))
-
-#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 ()))))))))))))))
-
-#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 ()))))))
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))))))))))))))
-
-#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 ()))))))))))))))))))
-
-#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 ()))))))))))))))
-
-#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 ()))))))))))))))
-
-#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 ()))))))
-
-#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 ()))))
-
-#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 ()))))
-
-#define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
-
-#define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
-
-#define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1))
-
-#define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1)))
-
-#define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1)))
-
-#define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1)))
-
-#define vec_sr(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
-      ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
-__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
-      ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
-__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
-      ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
-__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
-      ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
-__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
-      ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
-__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
-      ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
-    __altivec_link_error_invalid_argument ()))))))
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))))))
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))
-
-#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 ()))))))))))))))))))
-
-#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 ()))))))))))))))
-
-#define vec_st(a1, a2, a3) \
-  __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
-
-#define vec_stl(a1, a2, a3) \
-  __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
-
-#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 ())))))))
-
-#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 ())))
-
-#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 ()))
-
-#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 ()))
-
-#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 ())))))))))))))
-
-#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 ())
-
-#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 ()))))
-
-#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 ()))))
-
-#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 ()))))
-
-#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 ())
-
-#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 ()))))))))))))
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())))
-
-#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 ())))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
-
-#define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
-
-#define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
-
-#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 ())))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())))
-
-#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 ())
-
-#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 ())
-
-#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 ())
-
-#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 ())))))))))))))))))))))))
-
-/* 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 ())))))))))))))
-
-#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 ())))))))))))))
-
-#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))
-
-#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 ())))))))))))))
-
-#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))
-
-#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_EQ, (a1), (a1))
-
-#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 ())))))))))))))
-
-#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 ())))))))))))))
-
-#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 ())))))))))))))
-
-#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 ())))))))))))))
-
-#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)
-
-#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))
-
-#endif /* __cplusplus */
+#define vec_mfvscr() ((__vector unsigned short) __builtin_altivec_mfvscr ())
+#define vec_splat_s8(x) __builtin_altivec_vspltisb ((x))
+#define vec_splat_s16(x) __builtin_altivec_vspltish ((x))
+#define vec_splat_s32(x) __builtin_altivec_vspltisw ((x))
+#define vec_splat_u8(x) ((__vector unsigned char) vec_splat_s8 ((x)))
+#define vec_splat_u16(x) ((__vector unsigned short) vec_splat_s16 ((x)))
+#define vec_splat_u32(x) ((__vector unsigned int) vec_splat_s32 ((x)))
+
+/* This also accepts a type for its parameter, so it is not enough
+   to #define vec_step to __builtin_vec_step.  */
+#define vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0)
 
 #endif /* _ALTIVEC_H */