/* PowerPC AltiVec include file.
   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
   Contributed by Aldy Hernandez (aldyh@redhat.com).

   This file is part of GCC.

   GCC is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published
   by the Free Software Foundation; either version 2, or (at your
   option) any later version.

   GCC is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License
   along with GCC; see the file COPYING.  If not, write to the
   Free Software Foundation, 59 Temple Place - Suite 330, Boston,
   MA 02111-1307, USA.  */

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

/* Implemented to conform to the specification included in the AltiVec
   Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0).  */

#ifndef _ALTIVEC_H
#define _ALTIVEC_H 1

#if !defined(__VEC__) || !defined(__ALTIVEC__)
#error Use the "-maltivec" flag to enable PowerPC AltiVec support
#endif

/* APPLE LOCAL begin AltiVec */
/* If __APPLE_ALTIVEC__ is defined, the compiler has internally
   synthesized the definitions contained in this header.  */

#if defined(__APPLE_ALTIVEC__)
#warning Ignoring <altivec.h> because "-faltivec" specified
#else
/* You are allowed to undef these for C++ compatibility.  */
#define vector __vector
#define pixel __pixel
#define bool __bool
/* APPLE LOCAL end AltiVec */

/* Condition register codes for AltiVec predicates. */

#define __CR6_EQ		0
#define __CR6_EQ_REV		1
#define __CR6_LT		2
#define __CR6_LT_REV		3

/* These are easy... Same exact arguments.  */

#define vec_vaddcuw vec_addc
#define vec_vand vec_and
#define vec_vandc vec_andc
#define vec_vrfip vec_ceil
#define vec_vcmpbfp vec_cmpb
#define vec_vcmpgefp vec_cmpge
#define vec_vctsxs vec_cts
#define vec_vctuxs vec_ctu
#define vec_vexptefp vec_expte
#define vec_vrfim vec_floor
#define vec_lvx vec_ld
#define vec_lvxl vec_ldl
#define vec_vlogefp vec_loge
#define vec_vmaddfp vec_madd
#define vec_vmhaddshs vec_madds
#define vec_vmladduhm vec_mladd
#define vec_vmhraddshs vec_mradds
#define vec_vnmsubfp vec_nmsub
#define vec_vnor vec_nor
#define vec_vor vec_or
#define vec_vpkpx vec_packpx
#define vec_vperm vec_perm
#define vec_vrefp vec_re
#define vec_vrfin vec_round
#define vec_vrsqrtefp vec_rsqrte
#define vec_vsel vec_sel
#define vec_vsldoi vec_sld
#define vec_vsl vec_sll
#define vec_vslo vec_slo
#define vec_vspltisb vec_splat_s8
#define vec_vspltish vec_splat_s16
#define vec_vspltisw vec_splat_s32
#define vec_vsr vec_srl
#define vec_vsro vec_sro
#define vec_stvx vec_st
#define vec_stvxl vec_stl
#define vec_vsubcuw vec_subc
#define vec_vsum2sws vec_sum2s
#define vec_vsumsws vec_sums
#define vec_vrfiz vec_trunc
#define vec_vxor vec_xor

#ifdef __cplusplus

extern "C++" {

/* Prototypes for builtins that take literals and must always be
   inlined.  */
inline __vector float vec_ctf (__vector unsigned int, const int) __attribute__ ((always_inline));
inline __vector float vec_ctf (__vector signed int, const int) __attribute__ ((always_inline));
inline __vector float vec_vcfsx (__vector signed int a1, const int a2) __attribute__ ((always_inline));
inline __vector float vec_vcfux (__vector unsigned int a1, const int a2) __attribute__ ((always_inline));
inline __vector signed int vec_cts (__vector float, const int) __attribute__ ((always_inline));
inline __vector unsigned int vec_ctu (__vector float, const int) __attribute__ ((always_inline));
inline void vec_dss (const int) __attribute__ ((always_inline));

inline void vec_dst (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector bool char *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector signed short *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector bool short *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector pixel *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector signed int *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector bool int *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const __vector float *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const short *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const int *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const unsigned long *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const long *, int, const int) __attribute__ ((always_inline));
inline void vec_dst (const float *, int, const int) __attribute__ ((always_inline));

inline void vec_dstst (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector bool char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector signed short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector bool short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector pixel *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector signed int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector bool int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const __vector float *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const unsigned long *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const long *, int, const int) __attribute__ ((always_inline));
inline void vec_dstst (const float *, int, const int) __attribute__ ((always_inline));

inline void vec_dststt (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector bool char *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector signed short *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector bool short *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector pixel *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector signed int *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector bool int *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const __vector float *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const short *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const int *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const unsigned long *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const long *, int, const int) __attribute__ ((always_inline));
inline void vec_dststt (const float *, int, const int) __attribute__ ((always_inline));

inline void vec_dstt (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector bool char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector signed short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector bool short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector pixel *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector signed int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector bool int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const __vector float *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const unsigned char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const signed char *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const unsigned short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const short *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const unsigned int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const int *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const unsigned long *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const long *, int, const int) __attribute__ ((always_inline));
inline void vec_dstt (const float *, int, const int) __attribute__ ((always_inline));

inline __vector float vec_sld (__vector float, __vector float, const int) __attribute__ ((always_inline));
inline __vector signed int vec_sld (__vector signed int, __vector signed int, const int) __attribute__ ((always_inline));
inline __vector unsigned int vec_sld (__vector unsigned int, __vector unsigned int, const int) __attribute__ ((always_inline));
inline __vector bool int vec_sld (__vector bool int, __vector bool int, const int) __attribute__ ((always_inline));
inline __vector signed short vec_sld (__vector signed short, __vector signed short, const int) __attribute__ ((always_inline));
inline __vector unsigned short vec_sld (__vector unsigned short, __vector unsigned short, const int) __attribute__ ((always_inline));
inline __vector bool short vec_sld (__vector bool short, __vector bool short, const int) __attribute__ ((always_inline));
inline __vector pixel vec_sld (__vector pixel, __vector pixel, const int) __attribute__ ((always_inline));
inline __vector signed char vec_sld (__vector signed char, __vector signed char, const int) __attribute__ ((always_inline));
inline __vector unsigned char vec_sld (__vector unsigned char, __vector unsigned char, const int) __attribute__ ((always_inline));
inline __vector bool char vec_sld (__vector bool char, __vector bool char, const int) __attribute__ ((always_inline));
inline __vector signed char vec_splat (__vector signed char, const int) __attribute__ ((always_inline));
inline __vector unsigned char vec_splat (__vector unsigned char, const int) __attribute__ ((always_inline));
inline __vector bool char vec_splat (__vector bool char, const int) __attribute__ ((always_inline));
inline __vector signed short vec_splat (__vector signed short, const int) __attribute__ ((always_inline));
inline __vector unsigned short vec_splat (__vector unsigned short, const int) __attribute__ ((always_inline));
inline __vector bool short vec_splat (__vector bool short, const int) __attribute__ ((always_inline));
inline __vector pixel vec_splat (__vector pixel, const int) __attribute__ ((always_inline));
inline __vector float vec_splat (__vector float, const int) __attribute__ ((always_inline));
inline __vector signed int vec_splat (__vector signed int, const int) __attribute__ ((always_inline));
inline __vector unsigned int vec_splat (__vector unsigned int, const int) __attribute__ ((always_inline));
inline __vector bool int vec_splat (__vector bool int, const int) __attribute__ ((always_inline));
inline __vector signed char vec_splat_s8 (const int) __attribute__ ((always_inline));
inline __vector signed short vec_splat_s16 (const int) __attribute__ ((always_inline));
inline __vector signed int vec_splat_s32 (const int) __attribute__ ((always_inline));
inline __vector unsigned char vec_splat_u8 (const int) __attribute__ ((always_inline));
inline __vector unsigned short vec_splat_u16 (const int) __attribute__ ((always_inline));
inline __vector unsigned int vec_splat_u32 (const int) __attribute__ ((always_inline));
inline __vector float vec_vspltw (__vector float a1, const int a2) __attribute__ ((always_inline));
inline __vector bool int vec_vspltw (__vector bool int a1, const int a2) __attribute__ ((always_inline));
inline __vector signed int vec_vspltw (__vector signed int a1, const int a2) __attribute__ ((always_inline));
inline __vector unsigned int vec_vspltw (__vector unsigned int a1, const int a2) __attribute__ ((always_inline));
inline __vector bool short vec_vsplth (__vector bool short a1, const int a2) __attribute__ ((always_inline));
inline __vector signed short vec_vsplth (__vector signed short a1, const int a2) __attribute__ ((always_inline));
inline __vector unsigned short vec_vsplth (__vector unsigned short a1, const int a2) __attribute__ ((always_inline));
inline __vector pixel vec_vsplth (__vector pixel a1, const int a2) __attribute__ ((always_inline));
inline __vector bool char vec_vspltb (__vector bool char a1, const int a2) __attribute__ ((always_inline));
inline __vector signed char vec_vspltb (__vector signed char a1, const int a2) __attribute__ ((always_inline));
inline __vector unsigned char vec_vspltb (__vector unsigned char a1, const int a2) __attribute__ ((always_inline));

/* vec_step */

template<typename _Tp>
struct __vec_step_help
{
  // All proper __vector types will specialize _S_elem.
};

template<>
struct __vec_step_help<__vector signed short>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<const __vector signed short>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<__vector unsigned short>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<const __vector unsigned short>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<__vector bool short>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<const __vector bool short>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<__vector pixel>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<const __vector pixel>
{
  static const int _S_elem = 8;
};

template<>
struct __vec_step_help<__vector signed int>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<const __vector signed int>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<__vector unsigned int>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<const __vector unsigned int>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<__vector bool int>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<const __vector bool int>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<__vector unsigned char>
{
  static const int _S_elem = 16;
};

template<>
struct __vec_step_help<const __vector unsigned char>
{
  static const int _S_elem = 16;
};

template<>
struct __vec_step_help<__vector signed char>
{
  static const int _S_elem = 16;
};

template<>
struct __vec_step_help<const __vector signed char>
{
  static const int _S_elem = 16;
};

template<>
struct __vec_step_help<__vector bool char>
{
  static const int _S_elem = 16;
};

template<>
struct __vec_step_help<const __vector bool char>
{
  static const int _S_elem = 16;
};

template<>
struct __vec_step_help<__vector float>
{
  static const int _S_elem = 4;
};

template<>
struct __vec_step_help<const __vector float>
{
  static const int _S_elem = 4;
};

#define vec_step(t)  __vec_step_help<__typeof__(t)>::_S_elem

/* vec_abs */

inline __vector signed char
vec_abs (__vector signed char a1)
{
  return __builtin_altivec_abs_v16qi (a1);
}

inline __vector signed short
vec_abs (__vector signed short a1)
{
  return __builtin_altivec_abs_v8hi (a1);
}

inline __vector signed int
vec_abs (__vector signed int a1)
{
  return __builtin_altivec_abs_v4si (a1);
}

inline __vector float
vec_abs (__vector float a1)
{
  return __builtin_altivec_abs_v4sf (a1);
}

/* vec_abss */

inline __vector signed char
vec_abss (__vector signed char a1)
{
  return __builtin_altivec_abss_v16qi (a1);
}

inline __vector signed short
vec_abss (__vector signed short a1)
{
  return __builtin_altivec_abss_v8hi (a1);
}

inline __vector signed int
vec_abss (__vector signed int a1)
{
  return __builtin_altivec_abss_v4si (a1);
}

/* vec_add */

inline __vector signed char
vec_add (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_add (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_add (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_add (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_add (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_add (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_add (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_add (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_add (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_add (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_add (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_add (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_add (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_add (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_add (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_add (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_add (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_add (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_add (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vaddfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vaddfp */

inline __vector float
vec_vaddfp (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vaddfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vadduwm */

inline __vector signed int
vec_vadduwm (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vadduwm (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vadduwm (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vadduwm (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vadduwm (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vadduwm (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vadduhm */

inline __vector signed short
vec_vadduhm (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vadduhm (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vadduhm (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vadduhm (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vadduhm (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vadduhm (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vaddubm */

inline __vector signed char
vec_vaddubm (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vaddubm (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vaddubm (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vaddubm (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vaddubm (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vaddubm (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_addc */

inline __vector unsigned int
vec_addc (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vaddcuw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_adds */

inline __vector unsigned char
vec_adds (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_adds (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_adds (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_adds (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_adds (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_adds (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned short
vec_adds (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_adds (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_adds (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_adds (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_adds (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_adds (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned int
vec_adds (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_adds (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_adds (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_adds (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_adds (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_adds (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vaddsws */

inline __vector signed int
vec_vaddsws (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vaddsws (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vaddsws (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vadduws */

inline __vector unsigned int
vec_vadduws (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vadduws (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vadduws (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vaddshs */

inline __vector signed short
vec_vaddshs (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vaddshs (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vaddshs (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vadduhs */

inline __vector unsigned short
vec_vadduhs (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vadduhs (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vadduhs (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vaddsbs */

inline __vector signed char
vec_vaddsbs (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vaddsbs (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vaddsbs (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vaddubs */

inline __vector unsigned char
vec_vaddubs (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vaddubs (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vaddubs (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_and */

inline __vector float
vec_and (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_and (__vector float a1, __vector bool int a2)
{
  return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_and (__vector bool int a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_and (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_and (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_and (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_and (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_and (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_and (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_and (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_and (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_and (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_and (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_and (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_and (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_and (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_and (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_and (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_and (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_and (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_and (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_and (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_and (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_and (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vand ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_andc */

inline __vector float
vec_andc (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_andc (__vector float a1, __vector bool int a2)
{
  return (__vector float) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_andc (__vector bool int a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_andc (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_andc (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_andc (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_andc (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_andc (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_andc (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_andc (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_andc (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_andc (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_andc (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_andc (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_andc (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_andc (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_andc (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_andc (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_andc (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_andc (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_andc (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_andc (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_andc (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_andc (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_avg */

inline __vector unsigned char
vec_avg (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_avg (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned short
vec_avg (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_avg (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned int
vec_avg (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_avg (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vavgsw */

inline __vector signed int
vec_vavgsw (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vavguw */

inline __vector unsigned int
vec_vavguw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vavgsh */

inline __vector signed short
vec_vavgsh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vavguh */

inline __vector unsigned short
vec_vavguh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vavgsb */

inline __vector signed char
vec_vavgsb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vavgub */

inline __vector unsigned char
vec_vavgub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_ceil */

inline __vector float
vec_ceil (__vector float a1)
{
  return (__vector float) __builtin_altivec_vrfip ((__vector float) a1);
}

/* vec_cmpb */

inline __vector signed int
vec_cmpb (__vector float a1, __vector float a2)
{
  return (__vector signed int) __builtin_altivec_vcmpbfp ((__vector float) a1, (__vector float) a2);
}

/* vec_cmpeq */

inline __vector bool char
vec_cmpeq (__vector signed char a1, __vector signed char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool char
vec_cmpeq (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool short
vec_cmpeq (__vector signed short a1, __vector signed short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector bool short
vec_cmpeq (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector bool int
vec_cmpeq (__vector signed int a1, __vector signed int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_cmpeq (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_cmpeq (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpeqfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vcmpeqfp */

inline __vector bool int
vec_vcmpeqfp (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpeqfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vcmpequw */

inline __vector bool int
vec_vcmpequw (__vector signed int a1, __vector signed int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_vcmpequw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpequw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vcmpequh */

inline __vector bool short
vec_vcmpequh (__vector signed short a1, __vector signed short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector bool short
vec_vcmpequh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpequh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vcmpequb */

inline __vector bool char
vec_vcmpequb (__vector signed char a1, __vector signed char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool char
vec_vcmpequb (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpequb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_cmpge */

inline __vector bool int
vec_cmpge (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgefp ((__vector float) a1, (__vector float) a2);
}

/* vec_cmpgt */

inline __vector bool char
vec_cmpgt (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool char
vec_cmpgt (__vector signed char a1, __vector signed char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool short
vec_cmpgt (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector bool short
vec_cmpgt (__vector signed short a1, __vector signed short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector bool int
vec_cmpgt (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_cmpgt (__vector signed int a1, __vector signed int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_cmpgt (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vcmpgtfp */

inline __vector bool int
vec_vcmpgtfp (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vcmpgtsw */

inline __vector bool int
vec_vcmpgtsw (__vector signed int a1, __vector signed int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vcmpgtuw */

inline __vector bool int
vec_vcmpgtuw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vcmpgtsh */

inline __vector bool short
vec_vcmpgtsh (__vector signed short a1, __vector signed short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vcmpgtuh */

inline __vector bool short
vec_vcmpgtuh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vcmpgtsb */

inline __vector bool char
vec_vcmpgtsb (__vector signed char a1, __vector signed char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vcmpgtub */

inline __vector bool char
vec_vcmpgtub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_cmple */

inline __vector bool int
vec_cmple (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgefp ((__vector float) a2, (__vector float) a1);
}

/* vec_cmplt */

inline __vector bool char
vec_cmplt (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpgtub ((__vector signed char) a2, (__vector signed char) a1);
}

inline __vector bool char
vec_cmplt (__vector signed char a1, __vector signed char a2)
{
  return (__vector bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) a2, (__vector signed char) a1);
}

inline __vector bool short
vec_cmplt (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) a2, (__vector signed short) a1);
}

inline __vector bool short
vec_cmplt (__vector signed short a1, __vector signed short a2)
{
  return (__vector bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) a2, (__vector signed short) a1);
}

inline __vector bool int
vec_cmplt (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) a2, (__vector signed int) a1);
}

inline __vector bool int
vec_cmplt (__vector signed int a1, __vector signed int a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) a2, (__vector signed int) a1);
}

inline __vector bool int
vec_cmplt (__vector float a1, __vector float a2)
{
  return (__vector bool int) __builtin_altivec_vcmpgtfp ((__vector float) a2, (__vector float) a1);
}

/* vec_ctf */

inline __vector float
vec_ctf (__vector unsigned int a1, const int a2)
{
  return (__vector float) __builtin_altivec_vcfux ((__vector signed int) a1, a2);
}

inline __vector float
vec_ctf (__vector signed int a1, const int a2)
{
  return (__vector float) __builtin_altivec_vcfsx ((__vector signed int) a1, a2);
}

/* vec_vcfsx */

inline __vector float
vec_vcfsx (__vector signed int a1, const int a2)
{
  return (__vector float) __builtin_altivec_vcfsx ((__vector signed int) a1, a2);
}

/* vec_vcfux */

inline __vector float
vec_vcfux (__vector unsigned int a1, const int a2)
{
  return (__vector float) __builtin_altivec_vcfux ((__vector signed int) a1, a2);
}

/* vec_cts */

inline __vector signed int
vec_cts (__vector float a1, const int a2)
{
  return (__vector signed int) __builtin_altivec_vctsxs ((__vector float) a1, a2);
}

/* vec_ctu */

inline __vector unsigned int
vec_ctu (__vector float a1, const int a2)
{
  return (__vector unsigned int) __builtin_altivec_vctuxs ((__vector float) a1, a2);
}

/* vec_dss */

inline void
vec_dss (const int a1)
{
  __builtin_altivec_dss (a1);
}

/* vec_dssall */

inline void
vec_dssall (void)
{
  __builtin_altivec_dssall ();
}

/* vec_dst */

inline void
vec_dst (const __vector unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector bool char *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector signed short *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector bool short *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector pixel *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector signed int *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector bool int *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const __vector float *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const short *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const int *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const unsigned long *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const long *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

inline void
vec_dst (const float *a1, int a2, const int a3)
{
  __builtin_altivec_dst ((void *) a1, a2, a3);
}

/* vec_dstst */

inline void
vec_dstst (const __vector unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector bool char *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector signed short *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector bool short *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector pixel *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector signed int *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector bool int *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const __vector float *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const short *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const int *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const unsigned long *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const long *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

inline void
vec_dstst (const float *a1, int a2, const int a3)
{
  __builtin_altivec_dstst ((void *) a1, a2, a3);
}

/* vec_dststt */

inline void
vec_dststt (const __vector unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector bool char *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector signed short *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector bool short *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector pixel *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector signed int *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector bool int *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const __vector float *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const short *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const int *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const unsigned long *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const long *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

inline void
vec_dststt (const float *a1, int a2, const int a3)
{
  __builtin_altivec_dststt ((void *) a1, a2, a3);
}

/* vec_dstt */

inline void
vec_dstt (const __vector unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector bool char *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector signed short *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector bool short *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector pixel *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector signed int *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector bool int *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const __vector float *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const unsigned char *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const signed char *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const unsigned short *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const short *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const unsigned int *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const int *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const unsigned long *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const long *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

inline void
vec_dstt (const float *a1, int a2, const int a3)
{
  __builtin_altivec_dstt ((void *) a1, a2, a3);
}

/* vec_expte */

inline __vector float
vec_expte (__vector float a1)
{
  return (__vector float) __builtin_altivec_vexptefp ((__vector float) a1);
}

/* vec_floor */

inline __vector float
vec_floor (__vector float a1)
{
  return (__vector float) __builtin_altivec_vrfim ((__vector float) a1);
}

/* vec_ld */

inline __vector float
vec_ld (int a1, const __vector float *a2)
{
  return (__vector float) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector float
vec_ld (int a1, const float *a2)
{
  return (__vector float) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector bool int
vec_ld (int a1, const __vector bool int *a2)
{
  return (__vector bool int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed int
vec_ld (int a1, const __vector signed int *a2)
{
  return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed int
vec_ld (int a1, const int *a2)
{
  return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed int
vec_ld (int a1, const long *a2)
{
  return (__vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned int
vec_ld (int a1, const __vector unsigned int *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned int
vec_ld (int a1, const unsigned int *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned int
vec_ld (int a1, const unsigned long *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector bool short
vec_ld (int a1, const __vector bool short *a2)
{
  return (__vector bool short) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector pixel
vec_ld (int a1, const __vector pixel *a2)
{
  return (__vector pixel) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed short
vec_ld (int a1, const __vector signed short *a2)
{
  return (__vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed short
vec_ld (int a1, const short *a2)
{
  return (__vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned short
vec_ld (int a1, const __vector unsigned short *a2)
{
  return (__vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned short
vec_ld (int a1, const unsigned short *a2)
{
  return (__vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector bool char
vec_ld (int a1, const __vector bool char *a2)
{
  return (__vector bool char) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed char
vec_ld (int a1, const __vector signed char *a2)
{
  return (__vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector signed char
vec_ld (int a1, const signed char *a2)
{
  return (__vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned char
vec_ld (int a1, const __vector unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
}

inline __vector unsigned char
vec_ld (int a1, const unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
}

/* vec_lde */

inline __vector signed char
vec_lde (int a1, const signed char *a2)
{
  return (__vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
}

inline __vector unsigned char
vec_lde (int a1, const unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
}

inline __vector signed short
vec_lde (int a1, const short *a2)
{
  return (__vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
}

inline __vector unsigned short
vec_lde (int a1, const unsigned short *a2)
{
  return (__vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
}

inline __vector float
vec_lde (int a1, const float *a2)
{
  return (__vector float) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector signed int
vec_lde (int a1, const int *a2)
{
  return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector unsigned int
vec_lde (int a1, const unsigned int *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector signed int
vec_lde (int a1, const long *a2)
{
  return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector unsigned int
vec_lde (int a1, const unsigned long *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}

/* vec_lvewx */

inline __vector float
vec_lvewx (int a1, float *a2)
{
  return (__vector float) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector signed int
vec_lvewx (int a1, int *a2)
{
  return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector unsigned int
vec_lvewx (int a1, unsigned int *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector signed int
vec_lvewx (int a1, long *a2)
{
  return (__vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}

inline __vector unsigned int
vec_lvewx (int a1, unsigned long *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}

/* vec_lvehx */

inline __vector signed short
vec_lvehx (int a1, short *a2)
{
  return (__vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
}

inline __vector unsigned short
vec_lvehx (int a1, unsigned short *a2)
{
  return (__vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
}

/* vec_lvebx */

inline __vector signed char
vec_lvebx (int a1, signed char *a2)
{
  return (__vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvebx (int a1, unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
}

/* vec_ldl */

inline __vector float
vec_ldl (int a1, const __vector float *a2)
{
  return (__vector float) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector float
vec_ldl (int a1, const float *a2)
{
  return (__vector float) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector bool int
vec_ldl (int a1, const __vector bool int *a2)
{
  return (__vector bool int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed int
vec_ldl (int a1, const __vector signed int *a2)
{
  return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed int
vec_ldl (int a1, const int *a2)
{
  return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed int
vec_ldl (int a1, const long *a2)
{
  return (__vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned int
vec_ldl (int a1, const __vector unsigned int *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned int
vec_ldl (int a1, const unsigned int *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned int
vec_ldl (int a1, const unsigned long *a2)
{
  return (__vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector bool short
vec_ldl (int a1, const __vector bool short *a2)
{
  return (__vector bool short) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector pixel
vec_ldl (int a1, const __vector pixel *a2)
{
  return (__vector pixel) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed short
vec_ldl (int a1, const __vector signed short *a2)
{
  return (__vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed short
vec_ldl (int a1, const short *a2)
{
  return (__vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned short
vec_ldl (int a1, const __vector unsigned short *a2)
{
  return (__vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned short
vec_ldl (int a1, const unsigned short *a2)
{
  return (__vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector bool char
vec_ldl (int a1, const __vector bool char *a2)
{
  return (__vector bool char) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed char
vec_ldl (int a1, const __vector signed char *a2)
{
  return (__vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector signed char
vec_ldl (int a1, const signed char *a2)
{
  return (__vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned char
vec_ldl (int a1, const __vector unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
}

inline __vector unsigned char
vec_ldl (int a1, const unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
}

/* vec_loge */

inline __vector float
vec_loge (__vector float a1)
{
  return (__vector float) __builtin_altivec_vlogefp ((__vector float) a1);
}

/* vec_lvsl */

inline __vector unsigned char
vec_lvsl (int a1, const volatile unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile signed char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile unsigned short *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile short *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile unsigned int *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile int *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile unsigned long *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile long *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsl (int a1, const volatile float *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}

/* vec_lvsr */

inline __vector unsigned char
vec_lvsr (int a1, const volatile unsigned char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile signed char *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile unsigned short *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile short *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile unsigned int *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile int *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile unsigned long *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile long *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

inline __vector unsigned char
vec_lvsr (int a1, const volatile float *a2)
{
  return (__vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}

/* vec_madd */

inline __vector float
vec_madd (__vector float a1, __vector float a2, __vector float a3)
{
  return (__vector float) __builtin_altivec_vmaddfp ((__vector float) a1, (__vector float) a2, (__vector float) a3);
}

/* vec_madds */

inline __vector signed short
vec_madds (__vector signed short a1, __vector signed short a2, __vector signed short a3)
{
  return (__vector signed short) __builtin_altivec_vmhaddshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3);
}

/* vec_max */

inline __vector unsigned char
vec_max (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_max (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_max (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_max (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_max (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_max (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned short
vec_max (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_max (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_max (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_max (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_max (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_max (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned int
vec_max (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_max (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_max (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_max (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_max (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_max (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_max (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vmaxfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vmaxfp */

inline __vector float
vec_vmaxfp (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vmaxfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vmaxsw */

inline __vector signed int
vec_vmaxsw (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vmaxsw (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vmaxsw (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vmaxuw */

inline __vector unsigned int
vec_vmaxuw (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vmaxuw (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vmaxuw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vmaxsh */

inline __vector signed short
vec_vmaxsh (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vmaxsh (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vmaxsh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmaxuh */

inline __vector unsigned short
vec_vmaxuh (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vmaxuh (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vmaxuh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmaxsb */

inline __vector signed char
vec_vmaxsb (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vmaxsb (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vmaxsb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vmaxub */

inline __vector unsigned char
vec_vmaxub (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vmaxub (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vmaxub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_mergeh */

inline __vector bool char
vec_mergeh (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_mergeh (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_mergeh (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool short
vec_mergeh (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector pixel
vec_mergeh (__vector pixel a1, __vector pixel a2)
{
  return (__vector pixel) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_mergeh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_mergeh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector float
vec_mergeh (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_mergeh (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_mergeh (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_mergeh (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vmrghw */

inline __vector float
vec_vmrghw (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_vmrghw (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vmrghw (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vmrghw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vmrghh */

inline __vector bool short
vec_vmrghh (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vmrghh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vmrghh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector pixel
vec_vmrghh (__vector pixel a1, __vector pixel a2)
{
  return (__vector pixel) __builtin_altivec_vmrghh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmrghb */

inline __vector bool char
vec_vmrghb (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vmrghb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vmrghb (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_mergel */

inline __vector bool char
vec_mergel (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_mergel (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_mergel (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector bool short
vec_mergel (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector pixel
vec_mergel (__vector pixel a1, __vector pixel a2)
{
  return (__vector pixel) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_mergel (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_mergel (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector float
vec_mergel (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_mergel (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_mergel (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_mergel (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vmrglw */

inline __vector float
vec_vmrglw (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vmrglw (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vmrglw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_vmrglw (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vmrglw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vmrglh */

inline __vector bool short
vec_vmrglh (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vmrglh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vmrglh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector pixel
vec_vmrglh (__vector pixel a1, __vector pixel a2)
{
  return (__vector pixel) __builtin_altivec_vmrglh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmrglb */

inline __vector bool char
vec_vmrglb (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vmrglb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vmrglb (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_mfvscr */

inline __vector unsigned short
vec_mfvscr (void)
{
  return (__vector unsigned short) __builtin_altivec_mfvscr ();
}

/* vec_min */

inline __vector unsigned char
vec_min (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_min (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_min (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_min (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_min (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_min (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned short
vec_min (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_min (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_min (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_min (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_min (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_min (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned int
vec_min (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_min (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_min (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_min (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_min (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_min (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_min (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vminfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vminfp */

inline __vector float
vec_vminfp (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vminfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vminsw */

inline __vector signed int
vec_vminsw (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vminsw (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vminsw (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vminsw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vminuw */

inline __vector unsigned int
vec_vminuw (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vminuw (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vminuw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vminsh */

inline __vector signed short
vec_vminsh (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vminsh (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vminsh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vminsh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vminuh */

inline __vector unsigned short
vec_vminuh (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vminuh (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vminuh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vminsb */

inline __vector signed char
vec_vminsb (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vminsb (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vminsb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vminsb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vminub */

inline __vector unsigned char
vec_vminub (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vminub (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vminub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_mladd */

inline __vector signed short
vec_mladd (__vector signed short a1, __vector signed short a2, __vector signed short a3)
{
  return (__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3);
}

inline __vector signed short
vec_mladd (__vector signed short a1, __vector unsigned short a2, __vector unsigned short a3)
{
  return (__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3);
}

inline __vector signed short
vec_mladd (__vector unsigned short a1, __vector signed short a2, __vector signed short a3)
{
  return (__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3);
}

inline __vector unsigned short
vec_mladd (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned short a3)
{
  return (__vector unsigned short) __builtin_altivec_vmladduhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3);
}

/* vec_mradds */

inline __vector signed short
vec_mradds (__vector signed short a1, __vector signed short a2, __vector signed short a3)
{
  return (__vector signed short) __builtin_altivec_vmhraddshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed short) a3);
}

/* vec_msum */

inline __vector unsigned int
vec_msum (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3);
}

inline __vector signed int
vec_msum (__vector signed char a1, __vector unsigned char a2, __vector signed int a3)
{
  return (__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3);
}

inline __vector unsigned int
vec_msum (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

inline __vector signed int
vec_msum (__vector signed short a1, __vector signed short a2, __vector signed int a3)
{
  return (__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

/* vec_vmsumshm */

inline __vector signed int
vec_vmsumshm (__vector signed short a1, __vector signed short a2, __vector signed int a3)
{
  return (__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

/* vec_vmsumuhm */

inline __vector unsigned int
vec_vmsumuhm (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

/* vec_vmsummbm */

inline __vector signed int
vec_vmsummbm (__vector signed char a1, __vector unsigned char a2, __vector signed int a3)
{
  return (__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3);
}

/* vec_vmsumubm */

inline __vector unsigned int
vec_vmsumubm (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) a1, (__vector signed char) a2, (__vector signed int) a3);
}

/* vec_msums */

inline __vector unsigned int
vec_msums (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

inline __vector signed int
vec_msums (__vector signed short a1, __vector signed short a2, __vector signed int a3)
{
  return (__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

/* vec_vmsumshs */

inline __vector signed int
vec_vmsumshs (__vector signed short a1, __vector signed short a2, __vector signed int a3)
{
  return (__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

/* vec_vmsumuhs */

inline __vector unsigned int
vec_vmsumuhs (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) a1, (__vector signed short) a2, (__vector signed int) a3);
}

/* vec_mtvscr */

inline void
vec_mtvscr (__vector signed int a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector unsigned int a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector bool int a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector signed short a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector unsigned short a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector bool short a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector pixel a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector signed char a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector unsigned char a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

inline void
vec_mtvscr (__vector bool char a1)
{
  __builtin_altivec_mtvscr ((__vector signed int) a1);
}

/* vec_mule */

inline __vector unsigned short
vec_mule (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_mule (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed short) __builtin_altivec_vmulesb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned int
vec_mule (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_mule (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmulesh */

inline __vector signed int
vec_vmulesh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmuleuh */

inline __vector unsigned int
vec_vmuleuh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmulesb */

inline __vector signed short
vec_vmulesb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed short) __builtin_altivec_vmuleub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vmuleub */

inline __vector unsigned short
vec_vmuleub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_mulo */

inline __vector unsigned short
vec_mulo (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_mulo (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned int
vec_mulo (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_mulo (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmulosh */

inline __vector signed int
vec_vmulosh (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmulouh */

inline __vector unsigned int
vec_vmulouh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vmulosb */

inline __vector signed short
vec_vmulosb (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vmuloub */

inline __vector unsigned short
vec_vmuloub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_nmsub */

inline __vector float
vec_nmsub (__vector float a1, __vector float a2, __vector float a3)
{
  return (__vector float) __builtin_altivec_vnmsubfp ((__vector float) a1, (__vector float) a2, (__vector float) a3);
}

/* vec_nor */

inline __vector float
vec_nor (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_nor (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_nor (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_nor (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_nor (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_nor (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_nor (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_nor (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_nor (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_nor (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vnor ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_or */

inline __vector float
vec_or (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_or (__vector float a1, __vector bool int a2)
{
  return (__vector float) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_or (__vector bool int a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_or (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_or (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_or (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_or (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_or (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_or (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_or (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_or (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_or (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_or (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_or (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_or (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_or (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_or (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_or (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_or (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_or (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_or (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_or (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_or (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_or (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vor ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_pack */

inline __vector signed char
vec_pack (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned char
vec_pack (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector bool char
vec_pack (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_pack (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_pack (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_pack (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkuwum */

inline __vector bool short
vec_vpkuwum (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_vpkuwum (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_vpkuwum (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkuhum */

inline __vector bool char
vec_vpkuhum (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed char
vec_vpkuhum (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned char
vec_vpkuhum (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_packpx */

inline __vector pixel
vec_packpx (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector pixel) __builtin_altivec_vpkpx ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_packs */

inline __vector unsigned char
vec_packs (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed char
vec_packs (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_packs (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_packs (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkswss */

inline __vector signed short
vec_vpkswss (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkuwus */

inline __vector unsigned short
vec_vpkuwus (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkshss */

inline __vector signed char
vec_vpkshss (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vpkuhus */

inline __vector unsigned char
vec_vpkuhus (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_packsu */

inline __vector unsigned char
vec_packsu (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned char
vec_packsu (__vector signed short a1, __vector signed short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_packsu (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_packsu (__vector signed int a1, __vector signed int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkswus */

inline __vector unsigned short
vec_vpkswus (__vector signed int a1, __vector signed int a2)
{
  return (__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vpkshus */

inline __vector unsigned char
vec_vpkshus (__vector signed short a1, __vector signed short a2)
{
  return (__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_perm */

inline __vector float
vec_perm (__vector float a1, __vector float a2, __vector unsigned char a3)
{
  return (__vector float) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector signed int
vec_perm (__vector signed int a1, __vector signed int a2, __vector unsigned char a3)
{
  return (__vector signed int) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector unsigned int
vec_perm (__vector unsigned int a1, __vector unsigned int a2, __vector unsigned char a3)
{
  return (__vector unsigned int) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector bool int
vec_perm (__vector bool int a1, __vector bool int a2, __vector unsigned char a3)
{
  return (__vector bool int) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector signed short
vec_perm (__vector signed short a1, __vector signed short a2, __vector unsigned char a3)
{
  return (__vector signed short) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector unsigned short
vec_perm (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned char a3)
{
  return (__vector unsigned short) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector bool short
vec_perm (__vector bool short a1, __vector bool short a2, __vector unsigned char a3)
{
  return (__vector bool short) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector pixel
vec_perm (__vector pixel a1, __vector pixel a2, __vector unsigned char a3)
{
  return (__vector pixel) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector signed char
vec_perm (__vector signed char a1, __vector signed char a2, __vector unsigned char a3)
{
  return (__vector signed char) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector unsigned char
vec_perm (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned char a3)
{
  return (__vector unsigned char) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

inline __vector bool char
vec_perm (__vector bool char a1, __vector bool char a2, __vector unsigned char a3)
{
  return (__vector bool char) __builtin_altivec_vperm_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed char) a3);
}

/* vec_re */

inline __vector float
vec_re (__vector float a1)
{
  return (__vector float) __builtin_altivec_vrefp ((__vector float) a1);
}

/* vec_rl */

inline __vector signed char
vec_rl (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_rl (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_rl (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_rl (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_rl (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_rl (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vrlw */

inline __vector signed int
vec_vrlw (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vrlw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vrlh */

inline __vector signed short
vec_vrlh (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vrlh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vrlb */

inline __vector signed char
vec_vrlb (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vrlb (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_round */

inline __vector float
vec_round (__vector float a1)
{
  return (__vector float) __builtin_altivec_vrfin ((__vector float) a1);
}

/* vec_rsqrte */

inline __vector float
vec_rsqrte (__vector float a1)
{
  return (__vector float) __builtin_altivec_vrsqrtefp ((__vector float) a1);
}

/* vec_sel */

inline __vector float
vec_sel (__vector float a1, __vector float a2, __vector bool int a3)
{
  return (__vector float) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector float
vec_sel (__vector float a1, __vector float a2, __vector unsigned int a3)
{
  return (__vector float) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector signed int
vec_sel (__vector signed int a1, __vector signed int a2, __vector bool int a3)
{
  return (__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector signed int
vec_sel (__vector signed int a1, __vector signed int a2, __vector unsigned int a3)
{
  return (__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector unsigned int
vec_sel (__vector unsigned int a1, __vector unsigned int a2, __vector bool int a3)
{
  return (__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector unsigned int
vec_sel (__vector unsigned int a1, __vector unsigned int a2, __vector unsigned int a3)
{
  return (__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector bool int
vec_sel (__vector bool int a1, __vector bool int a2, __vector bool int a3)
{
  return (__vector bool int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector bool int
vec_sel (__vector bool int a1, __vector bool int a2, __vector unsigned int a3)
{
  return (__vector bool int) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector signed short
vec_sel (__vector signed short a1, __vector signed short a2, __vector bool short a3)
{
  return (__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector signed short
vec_sel (__vector signed short a1, __vector signed short a2, __vector unsigned short a3)
{
  return (__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector unsigned short
vec_sel (__vector unsigned short a1, __vector unsigned short a2, __vector bool short a3)
{
  return (__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector unsigned short
vec_sel (__vector unsigned short a1, __vector unsigned short a2, __vector unsigned short a3)
{
  return (__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector bool short
vec_sel (__vector bool short a1, __vector bool short a2, __vector bool short a3)
{
  return (__vector bool short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector bool short
vec_sel (__vector bool short a1, __vector bool short a2, __vector unsigned short a3)
{
  return (__vector bool short) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector signed char
vec_sel (__vector signed char a1, __vector signed char a2, __vector bool char a3)
{
  return (__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector signed char
vec_sel (__vector signed char a1, __vector signed char a2, __vector unsigned char a3)
{
  return (__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector unsigned char
vec_sel (__vector unsigned char a1, __vector unsigned char a2, __vector bool char a3)
{
  return (__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector unsigned char
vec_sel (__vector unsigned char a1, __vector unsigned char a2, __vector unsigned char a3)
{
  return (__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector bool char
vec_sel (__vector bool char a1, __vector bool char a2, __vector bool char a3)
{
  return (__vector bool char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

inline __vector bool char
vec_sel (__vector bool char a1, __vector bool char a2, __vector unsigned char a3)
{
  return (__vector bool char) __builtin_altivec_vsel_4si ((__vector signed int) a1, (__vector signed int) a2, (__vector signed int) a3);
}

/* vec_sl */

inline __vector signed char
vec_sl (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_sl (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_sl (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_sl (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_sl (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sl (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vslw */

inline __vector signed int
vec_vslw (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vslw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vslh */

inline __vector signed short
vec_vslh (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vslh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vslb */

inline __vector signed char
vec_vslb (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vslb (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_sld */

inline __vector float
vec_sld (__vector float a1, __vector float a2, const int a3)
{
  return (__vector float) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector signed int
vec_sld (__vector signed int a1, __vector signed int a2, const int a3)
{
  return (__vector signed int) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector unsigned int
vec_sld (__vector unsigned int a1, __vector unsigned int a2, const int a3)
{
  return (__vector unsigned int) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector bool int
vec_sld (__vector bool int a1, __vector bool int a2, const int a3)
{
  return (__vector bool int) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector signed short
vec_sld (__vector signed short a1, __vector signed short a2, const int a3)
{
  return (__vector signed short) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector unsigned short
vec_sld (__vector unsigned short a1, __vector unsigned short a2, const int a3)
{
  return (__vector unsigned short) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector bool short
vec_sld (__vector bool short a1, __vector bool short a2, const int a3)
{
  return (__vector bool short) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector pixel
vec_sld (__vector pixel a1, __vector pixel a2, const int a3)
{
  return (__vector pixel) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector signed char
vec_sld (__vector signed char a1, __vector signed char a2, const int a3)
{
  return (__vector signed char) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector unsigned char
vec_sld (__vector unsigned char a1, __vector unsigned char a2, const int a3)
{
  return (__vector unsigned char) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

inline __vector bool char
vec_sld (__vector bool char a1, __vector bool char a2, const int a3)
{
  return (__vector bool char) __builtin_altivec_vsldoi_4si ((__vector signed int) a1, (__vector signed int) a2, a3);
}

/* vec_sll */

inline __vector signed int
vec_sll (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sll (__vector signed int a1, __vector unsigned short a2)
{
  return (__vector signed int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sll (__vector signed int a1, __vector unsigned char a2)
{
  return (__vector signed int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sll (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sll (__vector unsigned int a1, __vector unsigned short a2)
{
  return (__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sll (__vector unsigned int a1, __vector unsigned char a2)
{
  return (__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_sll (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_sll (__vector bool int a1, __vector unsigned short a2)
{
  return (__vector bool int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_sll (__vector bool int a1, __vector unsigned char a2)
{
  return (__vector bool int) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_sll (__vector signed short a1, __vector unsigned int a2)
{
  return (__vector signed short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_sll (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_sll (__vector signed short a1, __vector unsigned char a2)
{
  return (__vector signed short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_sll (__vector unsigned short a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_sll (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_sll (__vector unsigned short a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_sll (__vector bool short a1, __vector unsigned int a2)
{
  return (__vector bool short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_sll (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_sll (__vector bool short a1, __vector unsigned char a2)
{
  return (__vector bool short) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_sll (__vector pixel a1, __vector unsigned int a2)
{
  return (__vector pixel) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_sll (__vector pixel a1, __vector unsigned short a2)
{
  return (__vector pixel) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_sll (__vector pixel a1, __vector unsigned char a2)
{
  return (__vector pixel) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_sll (__vector signed char a1, __vector unsigned int a2)
{
  return (__vector signed char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_sll (__vector signed char a1, __vector unsigned short a2)
{
  return (__vector signed char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_sll (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_sll (__vector unsigned char a1, __vector unsigned int a2)
{
  return (__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_sll (__vector unsigned char a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_sll (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_sll (__vector bool char a1, __vector unsigned int a2)
{
  return (__vector bool char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_sll (__vector bool char a1, __vector unsigned short a2)
{
  return (__vector bool char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_sll (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vsl ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_slo */

inline __vector float
vec_slo (__vector float a1, __vector signed char a2)
{
  return (__vector float) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_slo (__vector float a1, __vector unsigned char a2)
{
  return (__vector float) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_slo (__vector signed int a1, __vector signed char a2)
{
  return (__vector signed int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_slo (__vector signed int a1, __vector unsigned char a2)
{
  return (__vector signed int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_slo (__vector unsigned int a1, __vector signed char a2)
{
  return (__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_slo (__vector unsigned int a1, __vector unsigned char a2)
{
  return (__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_slo (__vector signed short a1, __vector signed char a2)
{
  return (__vector signed short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_slo (__vector signed short a1, __vector unsigned char a2)
{
  return (__vector signed short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_slo (__vector unsigned short a1, __vector signed char a2)
{
  return (__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_slo (__vector unsigned short a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_slo (__vector pixel a1, __vector signed char a2)
{
  return (__vector pixel) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_slo (__vector pixel a1, __vector unsigned char a2)
{
  return (__vector pixel) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_slo (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_slo (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_slo (__vector unsigned char a1, __vector signed char a2)
{
  return (__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_slo (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_splat */

inline __vector signed char
vec_splat (__vector signed char a1, const int a2)
{
  return (__vector signed char) __builtin_altivec_vspltb ((__vector signed char) a1,  a2);
}

inline __vector unsigned char
vec_splat (__vector unsigned char a1, const int a2)
{
  return (__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) a1,  a2);
}

inline __vector bool char
vec_splat (__vector bool char a1, const int a2)
{
  return (__vector bool char) __builtin_altivec_vspltb ((__vector signed char) a1,  a2);
}

inline __vector signed short
vec_splat (__vector signed short a1, const int a2)
{
  return (__vector signed short) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector unsigned short
vec_splat (__vector unsigned short a1, const int a2)
{
  return (__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector bool short
vec_splat (__vector bool short a1, const int a2)
{
  return (__vector bool short) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector pixel
vec_splat (__vector pixel a1, const int a2)
{
  return (__vector pixel) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector float
vec_splat (__vector float a1, const int a2)
{
  return (__vector float) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

inline __vector signed int
vec_splat (__vector signed int a1, const int a2)
{
  return (__vector signed int) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

inline __vector unsigned int
vec_splat (__vector unsigned int a1, const int a2)
{
  return (__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

inline __vector bool int
vec_splat (__vector bool int a1, const int a2)
{
  return (__vector bool int) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

/* vec_vspltw */

inline __vector float
vec_vspltw (__vector float a1, const int a2)
{
  return (__vector float) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

inline __vector signed int
vec_vspltw (__vector signed int a1, const int a2)
{
  return (__vector signed int) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

inline __vector unsigned int
vec_vspltw (__vector unsigned int a1, const int a2)
{
  return (__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

inline __vector bool int
vec_vspltw (__vector bool int a1, const int a2)
{
  return (__vector bool int) __builtin_altivec_vspltw ((__vector signed int) a1,  a2);
}

/* vec_vsplth */

inline __vector bool short
vec_vsplth (__vector bool short a1, const int a2)
{
  return (__vector bool short) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector signed short
vec_vsplth (__vector signed short a1, const int a2)
{
  return (__vector signed short) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector unsigned short
vec_vsplth (__vector unsigned short a1, const int a2)
{
  return (__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

inline __vector pixel
vec_vsplth (__vector pixel a1, const int a2)
{
  return (__vector pixel) __builtin_altivec_vsplth ((__vector signed short) a1,  a2);
}

/* vec_vspltb */

inline __vector signed char
vec_vspltb (__vector signed char a1, const int a2)
{
  return (__vector signed char) __builtin_altivec_vspltb ((__vector signed char) a1,  a2);
}

inline __vector unsigned char
vec_vspltb (__vector unsigned char a1, const int a2)
{
  return (__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) a1,  a2);
}

inline __vector bool char
vec_vspltb (__vector bool char a1, const int a2)
{
  return (__vector bool char) __builtin_altivec_vspltb ((__vector signed char) a1,  a2);
}

/* vec_splat_s8 */

inline __vector signed char
vec_splat_s8 (const int a1)
{
  return (__vector signed char) __builtin_altivec_vspltisb (a1);
}

/* vec_splat_s16 */

inline __vector signed short
vec_splat_s16 (const int a1)
{
  return (__vector signed short) __builtin_altivec_vspltish (a1);
}

/* vec_splat_s32 */

inline __vector signed int
vec_splat_s32 (const int a1)
{
  return (__vector signed int) __builtin_altivec_vspltisw (a1);
}

/* vec_splat_u8 */

inline __vector unsigned char
vec_splat_u8 (const int a1)
{
  return (__vector unsigned char) __builtin_altivec_vspltisb (a1);
}

/* vec_splat_u16 */

inline __vector unsigned short
vec_splat_u16 (const int a1)
{
  return (__vector unsigned short) __builtin_altivec_vspltish (a1);
}

/* vec_splat_u32 */

inline __vector unsigned int
vec_splat_u32 (const int a1)
{
  return (__vector unsigned int) __builtin_altivec_vspltisw (a1);
}

/* vec_sr */

inline __vector signed char
vec_sr (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_sr (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_sr (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_sr (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_sr (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sr (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsrw */

inline __vector signed int
vec_vsrw (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsrw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsrh */

inline __vector signed short
vec_vsrh (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsrh (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vsrb */

inline __vector signed char
vec_vsrb (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsrb (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_sra */

inline __vector signed char
vec_sra (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_sra (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_sra (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_sra (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_sra (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sra (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsraw */

inline __vector signed int
vec_vsraw (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsraw (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsrah */

inline __vector signed short
vec_vsrah (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsrah (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vsrab */

inline __vector signed char
vec_vsrab (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsrab (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_srl */

inline __vector signed int
vec_srl (__vector signed int a1, __vector unsigned int a2)
{
  return (__vector signed int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_srl (__vector signed int a1, __vector unsigned short a2)
{
  return (__vector signed int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_srl (__vector signed int a1, __vector unsigned char a2)
{
  return (__vector signed int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_srl (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_srl (__vector unsigned int a1, __vector unsigned short a2)
{
  return (__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_srl (__vector unsigned int a1, __vector unsigned char a2)
{
  return (__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_srl (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector bool int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_srl (__vector bool int a1, __vector unsigned short a2)
{
  return (__vector bool int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_srl (__vector bool int a1, __vector unsigned char a2)
{
  return (__vector bool int) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_srl (__vector signed short a1, __vector unsigned int a2)
{
  return (__vector signed short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_srl (__vector signed short a1, __vector unsigned short a2)
{
  return (__vector signed short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_srl (__vector signed short a1, __vector unsigned char a2)
{
  return (__vector signed short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_srl (__vector unsigned short a1, __vector unsigned int a2)
{
  return (__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_srl (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_srl (__vector unsigned short a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_srl (__vector bool short a1, __vector unsigned int a2)
{
  return (__vector bool short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_srl (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector bool short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_srl (__vector bool short a1, __vector unsigned char a2)
{
  return (__vector bool short) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_srl (__vector pixel a1, __vector unsigned int a2)
{
  return (__vector pixel) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_srl (__vector pixel a1, __vector unsigned short a2)
{
  return (__vector pixel) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_srl (__vector pixel a1, __vector unsigned char a2)
{
  return (__vector pixel) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_srl (__vector signed char a1, __vector unsigned int a2)
{
  return (__vector signed char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_srl (__vector signed char a1, __vector unsigned short a2)
{
  return (__vector signed char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_srl (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_srl (__vector unsigned char a1, __vector unsigned int a2)
{
  return (__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_srl (__vector unsigned char a1, __vector unsigned short a2)
{
  return (__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_srl (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_srl (__vector bool char a1, __vector unsigned int a2)
{
  return (__vector bool char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_srl (__vector bool char a1, __vector unsigned short a2)
{
  return (__vector bool char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_srl (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector bool char) __builtin_altivec_vsr ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_sro */

inline __vector float
vec_sro (__vector float a1, __vector signed char a2)
{
  return (__vector float) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_sro (__vector float a1, __vector unsigned char a2)
{
  return (__vector float) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sro (__vector signed int a1, __vector signed char a2)
{
  return (__vector signed int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sro (__vector signed int a1, __vector unsigned char a2)
{
  return (__vector signed int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sro (__vector unsigned int a1, __vector signed char a2)
{
  return (__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sro (__vector unsigned int a1, __vector unsigned char a2)
{
  return (__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_sro (__vector signed short a1, __vector signed char a2)
{
  return (__vector signed short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_sro (__vector signed short a1, __vector unsigned char a2)
{
  return (__vector signed short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_sro (__vector unsigned short a1, __vector signed char a2)
{
  return (__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_sro (__vector unsigned short a1, __vector unsigned char a2)
{
  return (__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_sro (__vector pixel a1, __vector signed char a2)
{
  return (__vector pixel) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector pixel
vec_sro (__vector pixel a1, __vector unsigned char a2)
{
  return (__vector pixel) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_sro (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_sro (__vector signed char a1, __vector unsigned char a2)
{
  return (__vector signed char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_sro (__vector unsigned char a1, __vector signed char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_sro (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_st */

inline void
vec_st (__vector float a1, int a2, __vector float *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector float a1, int a2, float *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector signed int a1, int a2, __vector signed int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector signed int a1, int a2, int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector unsigned int a1, int a2, __vector unsigned int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector unsigned int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool int a1, int a2, __vector bool int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool int a1, int a2, int *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector signed short a1, int a2, __vector signed short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector signed short a1, int a2, short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector unsigned short a1, int a2, __vector unsigned short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector unsigned short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool short a1, int a2, __vector bool short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector pixel a1, int a2, __vector pixel *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector pixel a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector pixel a1, int a2, short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool short a1, int a2, short *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector signed char a1, int a2, __vector signed char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector signed char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector unsigned char a1, int a2, __vector unsigned char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector unsigned char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool char a1, int a2, __vector bool char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_st (__vector bool char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvx ((__vector signed int) a1, a2, (void *) a3);
}

/* vec_ste */

inline void
vec_ste (__vector signed char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector unsigned char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector bool char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector bool char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector signed short a1, int a2, short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector unsigned short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector bool short a1, int a2, short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector bool short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector pixel a1, int a2, short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector pixel a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector float a1, int a2, float *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector signed int a1, int a2, int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector unsigned int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector bool int a1, int a2, int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_ste (__vector bool int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

/* vec_stvewx */

inline void
vec_stvewx (__vector float a1, int a2, float *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stvewx (__vector signed int a1, int a2, int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stvewx (__vector unsigned int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stvewx (__vector bool int a1, int a2, int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stvewx (__vector bool int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvewx ((__vector signed int) a1, a2, (void *) a3);
}

/* vec_stvehx */

inline void
vec_stvehx (__vector signed short a1, int a2, short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_stvehx (__vector unsigned short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_stvehx (__vector bool short a1, int a2, short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_stvehx (__vector bool short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_stvehx (__vector pixel a1, int a2, short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

inline void
vec_stvehx (__vector pixel a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvehx ((__vector signed short) a1, a2, (void *) a3);
}

/* vec_stvebx */

inline void
vec_stvebx (__vector signed char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_stvebx (__vector unsigned char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_stvebx (__vector bool char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

inline void
vec_stvebx (__vector bool char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvebx ((__vector signed char) a1, a2, (void *) a3);
}

/* vec_stl */

inline void
vec_stl (__vector float a1, int a2, __vector float *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector float a1, int a2, float *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector signed int a1, int a2, __vector signed int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector signed int a1, int a2, int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector unsigned int a1, int a2, __vector unsigned int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector unsigned int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool int a1, int a2, __vector bool int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool int a1, int a2, unsigned int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool int a1, int a2, int *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector signed short a1, int a2, __vector signed short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector signed short a1, int a2, short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector unsigned short a1, int a2, __vector unsigned short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector unsigned short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool short a1, int a2, __vector bool short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool short a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool short a1, int a2, short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector pixel a1, int a2, __vector pixel *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector pixel a1, int a2, unsigned short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector pixel a1, int a2, short *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector signed char a1, int a2, __vector signed char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector signed char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector unsigned char a1, int a2, __vector unsigned char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector unsigned char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool char a1, int a2, __vector bool char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool char a1, int a2, unsigned char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

inline void
vec_stl (__vector bool char a1, int a2, signed char *a3)
{
  __builtin_altivec_stvxl ((__vector signed int) a1, a2, (void *) a3);
}

/* vec_sub */

inline __vector signed char
vec_sub (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_sub (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_sub (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_sub (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_sub (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_sub (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed short
vec_sub (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_sub (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_sub (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_sub (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_sub (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_sub (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed int
vec_sub (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sub (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sub (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sub (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sub (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_sub (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_sub (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vsubfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vsubfp */

inline __vector float
vec_vsubfp (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vsubfp ((__vector float) a1, (__vector float) a2);
}

/* vec_vsubuwm */

inline __vector signed int
vec_vsubuwm (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vsubuwm (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vsubuwm (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsubuwm (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsubuwm (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsubuwm (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsubuhm */

inline __vector signed short
vec_vsubuhm (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vsubuhm (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vsubuhm (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsubuhm (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsubuhm (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsubuhm (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vsububm */

inline __vector signed char
vec_vsububm (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vsububm (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vsububm (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsububm (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsububm (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsububm (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_subc */

inline __vector unsigned int
vec_subc (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubcuw ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_subs */

inline __vector unsigned char
vec_subs (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_subs (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_subs (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_subs (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_subs (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_subs (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned short
vec_subs (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_subs (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_subs (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_subs (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_subs (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_subs (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned int
vec_subs (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_subs (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_subs (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_subs (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_subs (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_subs (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsubsws */

inline __vector signed int
vec_vsubsws (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vsubsws (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_vsubsws (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsubuws */

inline __vector unsigned int
vec_vsubuws (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsubuws (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_vsubuws (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_vsubshs */

inline __vector signed short
vec_vsubshs (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vsubshs (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector signed short
vec_vsubshs (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vsubuhs */

inline __vector unsigned short
vec_vsubuhs (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsubuhs (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2);
}

inline __vector unsigned short
vec_vsubuhs (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) a1, (__vector signed short) a2);
}

/* vec_vsubsbs */

inline __vector signed char
vec_vsubsbs (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vsubsbs (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector signed char
vec_vsubsbs (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_vsububs */

inline __vector unsigned char
vec_vsububs (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsububs (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2);
}

inline __vector unsigned char
vec_vsububs (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) a1, (__vector signed char) a2);
}

/* vec_sum4s */

inline __vector unsigned int
vec_sum4s (__vector unsigned char a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sum4s (__vector signed char a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_sum4s (__vector signed short a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) a1, (__vector signed int) a2);
}

/* vec_vsum4shs */

inline __vector signed int
vec_vsum4shs (__vector signed short a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) a1, (__vector signed int) a2);
}

/* vec_vsum4sbs */

inline __vector signed int
vec_vsum4sbs (__vector signed char a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) a1, (__vector signed int) a2);
}

/* vec_vsum4ubs */

inline __vector unsigned int
vec_vsum4ubs (__vector unsigned char a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) a1, (__vector signed int) a2);
}

/* vec_sum2s */

inline __vector signed int
vec_sum2s (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsum2sws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_sums */

inline __vector signed int
vec_sums (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vsumsws ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_trunc */

inline __vector float
vec_trunc (__vector float a1)
{
  return (__vector float) __builtin_altivec_vrfiz ((__vector float) a1);
}

/* vec_unpackh */

inline __vector signed short
vec_unpackh (__vector signed char a1)
{
  return (__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) a1);
}

inline __vector bool short
vec_unpackh (__vector bool char a1)
{
  return (__vector bool short) __builtin_altivec_vupkhsb ((__vector signed char) a1);
}

inline __vector signed int
vec_unpackh (__vector signed short a1)
{
  return (__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) a1);
}

inline __vector bool int
vec_unpackh (__vector bool short a1)
{
  return (__vector bool int) __builtin_altivec_vupkhsh ((__vector signed short) a1);
}

inline __vector unsigned int
vec_unpackh (__vector pixel a1)
{
  return (__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) a1);
}

/* vec_vupkhsh */

inline __vector bool int
vec_vupkhsh (__vector bool short a1)
{
  return (__vector bool int) __builtin_altivec_vupkhsh ((__vector signed short) a1);
}

inline __vector signed int
vec_vupkhsh (__vector signed short a1)
{
  return (__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) a1);
}

/* vec_vupkhpx */

inline __vector unsigned int
vec_vupkhpx (__vector pixel a1)
{
  return (__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) a1);
}

/* vec_vupkhsb */

inline __vector bool short
vec_vupkhsb (__vector bool char a1)
{
  return (__vector bool short) __builtin_altivec_vupkhsb ((__vector signed char) a1);
}

inline __vector signed short
vec_vupkhsb (__vector signed char a1)
{
  return (__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) a1);
}

/* vec_unpackl */

inline __vector signed short
vec_unpackl (__vector signed char a1)
{
  return (__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) a1);
}

inline __vector bool short
vec_unpackl (__vector bool char a1)
{
  return (__vector bool short) __builtin_altivec_vupklsb ((__vector signed char) a1);
}

inline __vector unsigned int
vec_unpackl (__vector pixel a1)
{
  return (__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) a1);
}

inline __vector signed int
vec_unpackl (__vector signed short a1)
{
  return (__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) a1);
}

inline __vector bool int
vec_unpackl (__vector bool short a1)
{
  return (__vector bool int) __builtin_altivec_vupklsh ((__vector signed short) a1);
}

/* vec_vupklpx */

inline __vector unsigned int
vec_vupklpx (__vector pixel a1)
{
  return (__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) a1);
}

/* vec_upklsh */

inline __vector bool int
vec_vupklsh (__vector bool short a1)
{
  return (__vector bool int) __builtin_altivec_vupklsh ((__vector signed short) a1);
}

inline __vector signed int
vec_vupklsh (__vector signed short a1)
{
  return (__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) a1);
}

/* vec_vupklsb */

inline __vector bool short
vec_vupklsb (__vector bool char a1)
{
  return (__vector bool short) __builtin_altivec_vupklsb ((__vector signed char) a1);
}

inline __vector signed short
vec_vupklsb (__vector signed char a1)
{
  return (__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) a1);
}

/* vec_xor */

inline __vector float
vec_xor (__vector float a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_xor (__vector float a1, __vector bool int a2)
{
  return (__vector float) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector float
vec_xor (__vector bool int a1, __vector float a2)
{
  return (__vector float) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool int
vec_xor (__vector bool int a1, __vector bool int a2)
{
  return (__vector bool int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_xor (__vector bool int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_xor (__vector signed int a1, __vector bool int a2)
{
  return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed int
vec_xor (__vector signed int a1, __vector signed int a2)
{
  return (__vector signed int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_xor (__vector bool int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_xor (__vector unsigned int a1, __vector bool int a2)
{
  return (__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned int
vec_xor (__vector unsigned int a1, __vector unsigned int a2)
{
  return (__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool short
vec_xor (__vector bool short a1, __vector bool short a2)
{
  return (__vector bool short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_xor (__vector bool short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_xor (__vector signed short a1, __vector bool short a2)
{
  return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed short
vec_xor (__vector signed short a1, __vector signed short a2)
{
  return (__vector signed short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_xor (__vector bool short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_xor (__vector unsigned short a1, __vector bool short a2)
{
  return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned short
vec_xor (__vector unsigned short a1, __vector unsigned short a2)
{
  return (__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_xor (__vector bool char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector bool char
vec_xor (__vector bool char a1, __vector bool char a2)
{
  return (__vector bool char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_xor (__vector signed char a1, __vector bool char a2)
{
  return (__vector signed char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector signed char
vec_xor (__vector signed char a1, __vector signed char a2)
{
  return (__vector signed char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_xor (__vector bool char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_xor (__vector unsigned char a1, __vector bool char a2)
{
  return (__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

inline __vector unsigned char
vec_xor (__vector unsigned char a1, __vector unsigned char a2)
{
  return (__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) a1, (__vector signed int) a2);
}

/* vec_all_eq */

inline int
vec_all_eq (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (__vector signed char) a2);
}

inline int
vec_all_eq (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
}

inline int
vec_all_eq (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_eq (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_eq (__vector bool char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_eq (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_eq (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_eq (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector bool short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector pixel a1, __vector pixel a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_eq (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector bool int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_eq (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
}

/* vec_all_ge */

inline int
vec_all_ge (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_ge (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_ge (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_ge (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_ge (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_ge (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_ge (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_ge (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_ge (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_ge (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_ge (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_ge (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_ge (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_ge (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_ge (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_ge (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_ge (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_ge (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_ge (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2);
}

/* vec_all_gt */

inline int
vec_all_gt (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_gt (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_gt (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_gt (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_gt (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_gt (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_gt (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_gt (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_gt (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_gt (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_gt (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_gt (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_gt (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_gt (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_gt (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_gt (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_gt (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_gt (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_gt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
}

/* vec_all_in */

inline int
vec_all_in (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
}

/* vec_all_le */

inline int
vec_all_le (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_le (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_le (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_le (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_le (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_le (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_le (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_le (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_le (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_le (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_le (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_le (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_le (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_le (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_le (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_le (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_le (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_le (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_le (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
}

/* vec_all_lt */

inline int
vec_all_lt (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_lt (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_lt (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_lt (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_lt (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_lt (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_all_lt (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_lt (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_lt (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_lt (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_lt (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_lt (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_all_lt (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_lt (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_lt (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_lt (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_lt (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_lt (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_all_lt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
}

/* vec_all_nan */

inline int
vec_all_nan (__vector float a1)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
}

/* vec_all_ne */

inline int
vec_all_ne (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector bool char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_all_ne (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector bool short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector pixel a1, __vector pixel a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_all_ne (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector bool int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_all_ne (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
}

/* vec_all_nge */

inline int
vec_all_nge (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
}

/* vec_all_ngt */

inline int
vec_all_ngt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
}

/* vec_all_nle */

inline int
vec_all_nle (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
}

/* vec_all_nlt */

inline int
vec_all_nlt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
}

/* vec_all_numeric */

inline int
vec_all_numeric (__vector float a1)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1);
}

/* vec_any_eq */

inline int
vec_any_eq (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector bool char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_eq (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector bool short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector pixel a1, __vector pixel a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_eq (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector bool int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_eq (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
}

/* vec_any_ge */

inline int
vec_any_ge (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_ge (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_ge (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_ge (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_ge (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_ge (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_ge (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_ge (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_ge (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_ge (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_ge (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_ge (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_ge (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_ge (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_ge (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_ge (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_ge (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_ge (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_ge (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
}

/* vec_any_gt */

inline int
vec_any_gt (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_gt (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_gt (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_gt (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_gt (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_gt (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_gt (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_gt (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_gt (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_gt (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_gt (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_gt (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_gt (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_gt (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_gt (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_gt (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_gt (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_gt (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_gt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
}

/* vec_any_le */

inline int
vec_any_le (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_le (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_le (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_le (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_le (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_le (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_le (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_le (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_le (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_le (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_le (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_le (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_le (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_le (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_le (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_le (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_le (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_le (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_le (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1);
}

/* vec_any_lt */

inline int
vec_any_lt (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_lt (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_lt (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_lt (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_lt (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_lt (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) a2, (__vector signed char) a1);
}

inline int
vec_any_lt (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_lt (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_lt (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_lt (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_lt (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_lt (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) a2, (__vector signed short) a1);
}

inline int
vec_any_lt (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_lt (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_lt (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_lt (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_lt (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_lt (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) a2, (__vector signed int) a1);
}

inline int
vec_any_lt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
}

/* vec_any_nan */

inline int
vec_any_nan (__vector float a1)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
}

/* vec_any_ne */

inline int
vec_any_ne (__vector signed char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector signed char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector unsigned char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector unsigned char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector bool char a1, __vector bool char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector bool char a1, __vector unsigned char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector bool char a1, __vector signed char a2)
{
  return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) a1, (__vector signed char) a2);
}

inline int
vec_any_ne (__vector signed short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector signed short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector unsigned short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector unsigned short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector bool short a1, __vector bool short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector bool short a1, __vector unsigned short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector bool short a1, __vector signed short a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector pixel a1, __vector pixel a2)
{
  return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) a1, (__vector signed short) a2);
}

inline int
vec_any_ne (__vector signed int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector signed int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector unsigned int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector unsigned int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector bool int a1, __vector bool int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector bool int a1, __vector unsigned int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector bool int a1, __vector signed int a2)
{
  return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) a1, (__vector signed int) a2);
}

inline int
vec_any_ne (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
}

/* vec_any_nge */

inline int
vec_any_nge (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
}

/* vec_any_ngt */

inline int
vec_any_ngt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
}

/* vec_any_nle */

inline int
vec_any_nle (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
}

/* vec_any_nlt */

inline int
vec_any_nlt (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
}

/* vec_any_numeric */

inline int
vec_any_numeric (__vector float a1)
{
  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
}

/* vec_any_out */

inline int
vec_any_out (__vector float a1, __vector float a2)
{
  return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
}

} /* extern "C++" */

#else /* not C++ */

/* "... and so I think no man in a century will suffer as greatly as
   you will."  */

/* Helper macros.  */

#define __un_args_eq(xtype, x)						\
	__builtin_types_compatible_p (xtype, __typeof__ (x))

#define __bin_args_eq(xtype, x, ytype, y)				\
	(__builtin_types_compatible_p (xtype, __typeof__ (x))		\
	 && __builtin_types_compatible_p (ytype, __typeof__ (y)))

#define __tern_args_eq(xtype, x, ytype, y, ztype, z)                    \
        (__builtin_types_compatible_p (xtype, __typeof__ (x))               \
         && __builtin_types_compatible_p (ytype, __typeof__ (y))		\
	 && __builtin_types_compatible_p (ztype, __typeof__ (z)))

#define __ch(x, y, z)	__builtin_choose_expr (x, y, z)

#define vec_step(t) \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector signed int), 4,      \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector unsigned int), 4,    \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __bool int), 4,        \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector signed short), 8,    \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector unsigned short), 8,  \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __bool short), 8,      \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __pixel), 8,           \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector signed char), 16,    \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector unsigned char), 16,  \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector __bool char), 16,      \
  __ch (__builtin_types_compatible_p (__typeof__ (t), __vector float), 4,           \
  __builtin_altivec_compiletime_error ("vec_step"))))))))))))

#define vec_abs(a) \
  __ch (__un_args_eq (__vector signed char, (a)), \
        ((__vector signed char) __builtin_altivec_abs_v16qi ((__vector signed char) (a))), \
  __ch (__un_args_eq (__vector signed short, (a)), \
        ((__vector signed short) __builtin_altivec_abs_v8hi ((__vector signed short) (a))), \
  __ch (__un_args_eq (__vector signed int, (a)), \
        ((__vector signed int) __builtin_altivec_abs_v4si ((__vector signed int) (a))), \
  __ch (__un_args_eq (__vector float, (a)), \
        ((__vector float) __builtin_altivec_abs_v4sf ((__vector float) (a))), \
  __builtin_altivec_compiletime_error ("vec_abs")))))

#define vec_abss(a) \
  __ch (__un_args_eq (__vector signed char, (a)), \
        ((__vector signed char) __builtin_altivec_abss_v16qi ((__vector signed char) (a))), \
  __ch (__un_args_eq (__vector signed short, (a)), \
        ((__vector signed short) __builtin_altivec_abss_v8hi ((__vector signed short) (a))), \
  __ch (__un_args_eq (__vector signed int, (a)), \
        ((__vector signed int) __builtin_altivec_abss_v4si ((__vector signed int) (a))), \
  __builtin_altivec_compiletime_error ("vec_abss"))))

#define vec_vaddubm(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vaddubm")))))))

#define vec_vadduhm(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vadduhm")))))))

#define vec_vadduwm(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vadduwm")))))))

#define vec_vaddfp(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vaddfp ((__vector float) (a1), (__vector float) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vaddfp"))

#define vec_add(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vaddfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_add"))))))))))))))))))))

#define vec_addc(a1, a2) \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vaddcuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_addc"))

#define vec_adds(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_adds")))))))))))))))))))

#define vec_vaddsws(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vaddsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vaddsws"))))

#define vec_vadduws(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vadduws ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vadduws"))))

#define vec_vaddshs(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vaddshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vaddshs"))))

#define vec_vadduhs(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vadduhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vadduhs"))))

#define vec_vaddsbs(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vaddsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vaddsbs"))))

#define vec_vaddubs(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vaddubs ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vaddubs"))))

#define vec_and(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \
      ((__vector float) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vand ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_and")))))))))))))))))))))))))

#define vec_andc(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \
      ((__vector float) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vandc ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_andc")))))))))))))))))))))))))

#define vec_avg(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_avg")))))))

#define vec_vavgsw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vavgsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vavgsw"))

#define vec_vavguw(a1, a2) \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vavguw ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vavguw"))

#define vec_vavgsh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vavgsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vavgsh"))

#define vec_vavguh(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vavguh ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vavguh"))

#define vec_vavgsb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vavgsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vavgsb"))

#define vec_vavgub(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vavgub ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vavgub"))

#define vec_ceil(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vrfip ((__vector float) (a1))), \
  __builtin_altivec_compiletime_error ("vec_ceil"))

#define vec_cmpb(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector signed int) __builtin_altivec_vcmpbfp ((__vector float) (a1), (__vector float) (a2))), \
  __builtin_altivec_compiletime_error ("vec_cmpb"))

#define vec_cmpeq(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpeqfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_cmpeq"))))))))

#define vec_vcmpeqfp(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpeqfp ((__vector float) (a1), (__vector float) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpeqfp"))

#define vec_vcmpequw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpequw ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpequw")))

#define vec_vcmpequh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpequh ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpequh")))

#define vec_vcmpequb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpequb ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpequb")))

#define vec_cmpge(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgefp ((__vector float) (a1), (__vector float) (a2))), \
  __builtin_altivec_compiletime_error ("vec_cmpge"))

#define vec_cmpgt(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_cmpgt"))))))))

#define vec_vcmpgtfp(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) (a1), (__vector float) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtfp"))

#define vec_vcmpgtsw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtsw"))

#define vec_vcmpgtuw(a1, a2) \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtuw"))

#define vec_vcmpgtsh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtsh"))

#define vec_vcmpgtuh(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtuh"))

#define vec_vcmpgtsb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtsb"))

#define vec_vcmpgtub(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) (a1), (__vector signed char) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcmpgtub"))

#define vec_cmple(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgefp ((__vector float) (a2), (__vector float) (a1))), \
  __builtin_altivec_compiletime_error ("vec_cmple"))

#define vec_cmplt(a2, a1) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpgtub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vcmpgtsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpgtuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vcmpgtsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector __bool int) __builtin_altivec_vcmpgtfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_cmplt"))))))))

#define vec_ctf(a1, a2) \
__ch (__un_args_eq (__vector unsigned int, (a1)), \
      ((__vector float) __builtin_altivec_vcfux ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector signed int, (a1)), \
      ((__vector float) __builtin_altivec_vcfsx ((__vector signed int) (a1), (const int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_ctf")))

#define vec_vcfsx(a1, a2) \
__ch (__un_args_eq (__vector signed int, (a1)), \
      ((__vector float) __builtin_altivec_vcfsx ((__vector signed int) (a1), (const int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcfsx"))

#define vec_vcfux(a1, a2) \
__ch (__un_args_eq (__vector unsigned int, (a1)), \
      ((__vector float) __builtin_altivec_vcfux ((__vector signed int) (a1), (const int) (a2))), \
  __builtin_altivec_compiletime_error ("vec_vcfux"))

#define vec_cts(a1, a2) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector signed int) __builtin_altivec_vctsxs ((__vector float) (a1), (const int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_cts"))

#define vec_ctu(a1, a2) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vctuxs ((__vector float) (a1), (const int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_ctu"))

#define vec_dss(a1) __builtin_altivec_dss ((const int) (a1));

#define vec_dssall() __builtin_altivec_dssall ()

#define vec_dst(a1, a2, a3) \
__ch (__un_args_eq (const __vector unsigned char, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed char, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool char, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned short, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed short, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool short, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __pixel, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned int, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed int, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool int, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector float, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned char, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const signed char, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned short, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const short, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned int, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const int, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned long, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const long, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const float, *(a1)), \
      __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
  __builtin_altivec_compiletime_error ("vec_dst")))))))))))))))))))))

#define vec_dstst(a1, a2, a3) \
__ch (__un_args_eq (const __vector unsigned char, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed char, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool char, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned short, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed short, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool short, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __pixel, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned int, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed int, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool int, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector float, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned char, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const signed char, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned short, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const short, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned int, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const int, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned long, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const long, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const float, *(a1)), \
      __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
  __builtin_altivec_compiletime_error ("vec_dstst")))))))))))))))))))))

#define vec_dststt(a1, a2, a3) \
__ch (__un_args_eq (const __vector unsigned char, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed char, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool char, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned short, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed short, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool short, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __pixel, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned int, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed int, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool int, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector float, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned char, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const signed char, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned short, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const short, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned int, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const int, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned long, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const long, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const float, *(a1)), \
      __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
  __builtin_altivec_compiletime_error ("vec_dststt")))))))))))))))))))))

#define vec_dstt(a1, a2, a3) \
__ch (__un_args_eq (const __vector unsigned char, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed char, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool char, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned short, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed short, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool short, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __pixel, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector unsigned int, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector signed int, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector __bool int, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const __vector float, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned char, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const signed char, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned short, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const short, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned int, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const int, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const unsigned long, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const long, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
__ch (__un_args_eq (const float, *(a1)), \
      __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
  __builtin_altivec_compiletime_error ("vec_dstt")))))))))))))))))))))

#define vec_expte(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vexptefp ((__vector float) (a1))), \
  __builtin_altivec_compiletime_error ("vec_expte"))

#define vec_floor(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vrfim ((__vector float) (a1))), \
  __builtin_altivec_compiletime_error ("vec_floor"))

#define vec_ld(a, b) \
__ch (__un_args_eq (const __vector unsigned char, *(b)), \
      ((__vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const unsigned char, *(b)), \
      ((__vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector signed char, *(b)), \
      ((__vector signed char) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const signed char, *(b)), \
      ((__vector signed char) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector __bool char, *(b)), \
      ((__vector __bool char) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector unsigned short, *(b)), \
      ((__vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const unsigned short, *(b)), \
      ((__vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector signed short, *(b)), \
      ((__vector signed short) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const short, *(b)), \
      ((__vector signed short) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector __bool short, *(b)), \
      ((__vector __bool short) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector __pixel, *(b)), \
      ((__vector __pixel) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector unsigned int, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const unsigned int, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const unsigned long, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector signed int, *(b)), \
      ((__vector signed int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const int, *(b)), \
      ((__vector signed int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const long, *(b)), \
      ((__vector signed int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector __bool int, *(b)), \
      ((__vector __bool int) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const __vector float, *(b)), \
      ((__vector float) __builtin_altivec_lvx ((a), (b))), \
__ch (__un_args_eq (const float, *(b)), \
      ((__vector float) __builtin_altivec_lvx ((a), (b))), \
__builtin_altivec_compiletime_error ("vec_ld")))))))))))))))))))))

#define vec_lde(a, b) \
__ch (__un_args_eq (const unsigned char, *(b)), \
      ((__vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
__ch (__un_args_eq (const signed char, *(b)), \
      ((__vector signed char) __builtin_altivec_lvebx ((a), (b))), \
__ch (__un_args_eq (const unsigned short, *(b)), \
      ((__vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
__ch (__un_args_eq (const short, *(b)), \
      ((__vector signed short) __builtin_altivec_lvehx ((a), (b))), \
__ch (__un_args_eq (const unsigned long, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (const long, *(b)), \
      ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (const unsigned int, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (const int, *(b)), \
      ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (const float, *(b)), \
      ((__vector float) __builtin_altivec_lvewx ((a), (b))), \
__builtin_altivec_compiletime_error ("vec_lde"))))))))))

#define vec_lvewx(a, b) \
__ch (__un_args_eq (unsigned int, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (signed int, *(b)), \
      ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (unsigned long, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (signed long, *(b)), \
      ((__vector signed int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (float, *(b)), \
      ((__vector float) __builtin_altivec_lvewx ((a), (b))), \
__builtin_altivec_compiletime_error ("vec_lvewx"))))))

#define vec_lvehx(a, b) \
__ch (__un_args_eq (unsigned short, *(b)), \
      ((__vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
__ch (__un_args_eq (signed short, *(b)), \
      ((__vector signed short) __builtin_altivec_lvehx ((a), (b))), \
__builtin_altivec_compiletime_error ("vec_lvehx")))

#define vec_lvebx(a, b) \
__ch (__un_args_eq (unsigned char, *(b)), \
      ((__vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
__ch (__un_args_eq (signed char, *(b)), \
      ((__vector signed char) __builtin_altivec_lvebx ((a), (b))), \
__builtin_altivec_compiletime_error ("vec_lvebx")))

#define vec_ldl(a, b) \
__ch (__un_args_eq (const __vector unsigned char, *(b)), \
      ((__vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const unsigned char, *(b)), \
      ((__vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector signed char, *(b)), \
      ((__vector signed char) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const signed char, *(b)), \
      ((__vector signed char) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector __bool char, *(b)), \
      ((__vector __bool char) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector unsigned short, *(b)), \
      ((__vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const unsigned short, *(b)), \
      ((__vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector signed short, *(b)), \
      ((__vector signed short) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const short, *(b)), \
      ((__vector signed short) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector __bool short, *(b)), \
      ((__vector __bool short) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector __pixel, *(b)), \
      ((__vector __pixel) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector unsigned int, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const unsigned int, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const unsigned long, *(b)), \
      ((__vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector signed int, *(b)), \
      ((__vector signed int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const int, *(b)), \
      ((__vector signed int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const long, *(b)), \
      ((__vector signed int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector __bool int, *(b)), \
      ((__vector __bool int) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const __vector float, *(b)), \
      ((__vector float) __builtin_altivec_lvxl ((a), (b))), \
__ch (__un_args_eq (const float, *(b)), \
      ((__vector float) __builtin_altivec_lvxl ((a), (b))), \
__builtin_altivec_compiletime_error ("vec_ldl")))))))))))))))))))))

#define vec_loge(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vlogefp ((__vector float) (a1))), \
  __builtin_altivec_compiletime_error ("vec_loge"))

#define vec_lvsl(a1, a2) \
__ch (__un_args_eq (const volatile unsigned char, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed char, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile unsigned short, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed short, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile unsigned int, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed int, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile unsigned long, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed long, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile float, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
__builtin_altivec_compiletime_error ("vec_lvsl"))))))))))

#define vec_lvsr(a1, a2) \
__ch (__un_args_eq (const volatile unsigned char, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed char, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile unsigned short, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed short, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile unsigned int, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed int, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile unsigned long, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile signed long, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__ch (__un_args_eq (const volatile float, *(a2)), \
      ((__vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
__builtin_altivec_compiletime_error ("vec_lvsr"))))))))))

#define vec_madd(a1, a2, a3) \
__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector float, (a3)), \
      ((__vector float) __builtin_altivec_vmaddfp ((a1), (a2), (a3))), \
__builtin_altivec_compiletime_error ("vec_madd"))

#define vec_madds(a1, a2, a3) \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \
      ((__vector signed short) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))), \
__builtin_altivec_compiletime_error ("vec_madds"))

#define vec_max(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vmaxfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_max"))))))))))))))))))))

#define vec_vmaxfp(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vmaxfp ((__vector float) (a1), (__vector float) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxfp"))

#define vec_vmaxsw(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmaxsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxsw"))))

#define vec_vmaxuw(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmaxuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxuw"))))

#define vec_vmaxsh(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmaxsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxsh"))))

#define vec_vmaxuh(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmaxuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxuh"))))

#define vec_vmaxsb(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmaxsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxsb"))))

#define vec_vmaxub(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmaxub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmaxub"))))

#define vec_mergeh(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      ((__vector __pixel) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_mergeh"))))))))))))

#define vec_vmrghw(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmrghw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmrghw")))))

#define vec_vmrghh(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      ((__vector __pixel) __builtin_altivec_vmrghh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmrghh")))))

#define vec_vmrghb(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmrghb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmrghb"))))

#define vec_mergel(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      ((__vector __pixel) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_mergel"))))))))))))

#define vec_vmrglw(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vmrglw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmrglw")))))

#define vec_vmrglh(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      ((__vector __pixel) __builtin_altivec_vmrglh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmrglh")))))

#define vec_vmrglb(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vmrglb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmrglb"))))

#define vec_mfvscr()  (((__vector unsigned short) __builtin_altivec_mfvscr ()))

#define vec_min(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vminfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_min"))))))))))))))))))))

#define vec_vminfp(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vminfp ((__vector float) (a1), (__vector float) (a2))), \
__builtin_altivec_compiletime_error ("vec_vminfp"))

#define vec_vminsw(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vminsw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vminsw"))))

#define vec_vminuw(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vminuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vminuw"))))

#define vec_vminsh(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vminsh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vminsh"))))

#define vec_vminuh(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vminuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vminuh"))))

#define vec_vminsb(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vminsb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_minsb"))))

#define vec_vminub(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vminub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vminub"))))

#define vec_mladd(a1, a2, a3) \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \
      ((__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \
__ch (__tern_args_eq (__vector signed short, (a1), __vector unsigned short, (a2), __vector unsigned short, (a3)), \
      ((__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \
      ((__vector signed short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned short, (a3)), \
      ((__vector unsigned short) __builtin_altivec_vmladduhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed short) (a3))), \
    __builtin_altivec_compiletime_error ("vec_mladd")))))

#define vec_mradds(a1, a2, a3) \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed short, (a3)), \
      ((__vector signed short) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))), \
__builtin_altivec_compiletime_error ("vec_mradds"))

#define vec_msum(a1, a2, a3) \
__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed char, (a1), __vector unsigned char, (a2), __vector signed int, (a3)), \
      ((__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \
      ((__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
    __builtin_altivec_compiletime_error ("vec_msum")))))

#define vec_vmsumshm(a1, a2, a3) \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \
      ((__vector signed int) __builtin_altivec_vmsumshm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
__builtin_altivec_compiletime_error ("vec_vmsumshm"))

#define vec_vmsumuhm(a1, a2, a3) \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vmsumuhm ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
__builtin_altivec_compiletime_error ("vec_vmsumuhm"))

#define vec_vmsummbm(a1, a2, a3) \
__ch (__tern_args_eq (__vector signed char, (a1), __vector unsigned char, (a2), __vector signed int, (a3)), \
      ((__vector signed int) __builtin_altivec_vmsummbm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \
__builtin_altivec_compiletime_error ("vec_vmsummbm"))

#define vec_vmsumubm(a1, a2, a3) \
__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vmsumubm ((__vector signed char) (a1), (__vector signed char) (a2), (__vector signed int) (a3))), \
__builtin_altivec_compiletime_error ("vec_vmsummbm"))

#define vec_msums(a1, a2, a3) \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \
      ((__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
    __builtin_altivec_compiletime_error ("vec_msums")))

#define vec_vmsumshs(a1, a2, a3) \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector signed int, (a3)), \
      ((__vector signed int) __builtin_altivec_vmsumshs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
__builtin_altivec_compiletime_error ("vec_vmsumshs"))

#define vec_vmsumuhs(a1, a2, a3) \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vmsumuhs ((__vector signed short) (a1), (__vector signed short) (a2), (__vector signed int) (a3))), \
__builtin_altivec_compiletime_error ("vec_vmsumuhs"))

#define vec_mtvscr(a1) \
__ch (__un_args_eq (__vector signed int, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector unsigned int, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector __bool int, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector unsigned short, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector signed char, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector unsigned char, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      __builtin_altivec_mtvscr ((__vector signed int) (a1)), \
    __builtin_altivec_compiletime_error ("vec_mtvscr")))))))))))

#define vec_mule(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed short) __builtin_altivec_vmulesb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) (a1), (__vector signed short) (a2))), \
    __builtin_altivec_compiletime_error ("vec_mule")))))

#define vec_vmulesh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed int) __builtin_altivec_vmulesh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmulesh"))

#define vec_vmuleuh(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmuleuh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmuleuh"))

#define vec_vmulesb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed short) __builtin_altivec_vmulesb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmulesb"))

#define vec_vmuleub(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmuleub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmuleub"))

#define vec_mulo(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) (a1), (__vector signed short) (a2))), \
    __builtin_altivec_compiletime_error ("vec_mulo")))))

#define vec_vmulosh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed int) __builtin_altivec_vmulosh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmulosh"))

#define vec_vmulouh(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vmulouh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmulouh"))

#define vec_vmulosb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed short) __builtin_altivec_vmulosb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmulosb"))

#define vec_vmuloub(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vmuloub ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vmuloub"))

#define vec_nmsub(a1, a2, a3) \
__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector float, (a3)), \
      ((__vector float) __builtin_altivec_vnmsubfp ((__vector float) (a1), (__vector float) (a2), (__vector float) (a3))), \
    __builtin_altivec_compiletime_error ("vec_nmsub"))

#define vec_nor(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vnor ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_nor")))))))))))

#define vec_or(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \
      ((__vector float) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vor ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_or")))))))))))))))))))))))))

#define vec_pack(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_pack")))))))

#define vec_vpkuwum(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkuwum ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkuwum"))))

#define vec_vpkuhum(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkuhum ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkuhum"))))

#define vec_packpx(a1, a2) \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
  ((__vector __pixel) __builtin_altivec_vpkpx ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_packpx"))

#define vec_packs(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_packs")))))

#define vec_vpkswss(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed short) __builtin_altivec_vpkswss ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkswss"))

#define vec_vpkuwus(a1, a2) \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkuwus"))

#define vec_vpkshss(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed char) __builtin_altivec_vpkshss ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkshss"))

#define vec_vpkuhus(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkuhus"))

#define vec_packsu(a1, a2) \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkuhus ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkuwus ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_packsu")))))

#define vec_vpkswus(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vpkswus ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkswus"))

#define vec_vpkshus(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vpkshus ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vpkshus"))

#define vec_perm(a1, a2, a3) \
__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector unsigned char, (a3)), \
      ((__vector float) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector signed int, (a1), __vector signed int, (a2), __vector unsigned char, (a3)), \
      ((__vector signed int) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2), __vector unsigned char, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector __bool int, (a1), __vector __bool int, (a2), __vector unsigned char, (a3)), \
      ((__vector __bool int) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector unsigned char, (a3)), \
      ((__vector signed short) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned char, (a3)), \
      ((__vector unsigned short) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector __bool short, (a1), __vector __bool short, (a2), __vector unsigned char, (a3)), \
      ((__vector __bool short) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector __pixel, (a1), __vector __pixel, (a2), __vector unsigned char, (a3)), \
      ((__vector __pixel) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector signed char, (a1), __vector signed char, (a2), __vector unsigned char, (a3)), \
      ((__vector signed char) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned char, (a3)), \
      ((__vector unsigned char) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
__ch (__tern_args_eq (__vector __bool char, (a1), __vector __bool char, (a2), __vector unsigned char, (a3)), \
      ((__vector __bool char) __builtin_altivec_vperm_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed char) (a3))), \
    __builtin_altivec_compiletime_error ("vec_perm"))))))))))))

#define vec_re(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vrefp ((__vector float) (a1))), \
__builtin_altivec_compiletime_error ("vec_re"))

#define vec_rl(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_rl")))))))

#define vec_vrlw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vrlw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vrlw")))

#define vec_vrlh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vrlh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vrlh")))

#define vec_vrlb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vrlb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vrlb")))

#define vec_round(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vrfin ((__vector float) (a1))), \
__builtin_altivec_compiletime_error ("vec_round"))

#define vec_rsqrte(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vrsqrtefp ((__vector float) (a1))), \
__builtin_altivec_compiletime_error ("vec_rsqrte"))

#define vec_sel(a1, a2, a3) \
__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector __bool int, (a3)), \
      ((__vector float) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector float, (a1), __vector float, (a2), __vector unsigned int, (a3)), \
      ((__vector float) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector __bool int, (a1), __vector __bool int, (a2), __vector __bool int, (a3)), \
      ((__vector __bool int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector __bool int, (a1), __vector __bool int, (a2), __vector unsigned int, (a3)), \
      ((__vector __bool int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed int, (a1), __vector signed int, (a2), __vector __bool int, (a3)), \
      ((__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed int, (a1), __vector signed int, (a2), __vector unsigned int, (a3)), \
      ((__vector signed int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2), __vector __bool int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2), __vector unsigned int, (a3)), \
      ((__vector unsigned int) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector __bool short, (a1), __vector __bool short, (a2), __vector __bool short, (a3)), \
      ((__vector __bool short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector __bool short, (a1), __vector __bool short, (a2), __vector unsigned short, (a3)), \
      ((__vector __bool short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector __bool short, (a3)), \
      ((__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed short, (a1), __vector signed short, (a2), __vector unsigned short, (a3)), \
      ((__vector signed short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector __bool short, (a3)), \
      ((__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2), __vector unsigned short, (a3)), \
      ((__vector unsigned short) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector __bool char, (a1), __vector __bool char, (a2), __vector __bool char, (a3)), \
      ((__vector __bool char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector __bool char, (a1), __vector __bool char, (a2), __vector unsigned char, (a3)), \
      ((__vector __bool char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed char, (a1), __vector signed char, (a2), __vector __bool char, (a3)), \
      ((__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector signed char, (a1), __vector signed char, (a2), __vector unsigned char, (a3)), \
      ((__vector signed char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector __bool char, (a3)), \
      ((__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
__ch (__tern_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2), __vector unsigned char, (a3)), \
      ((__vector unsigned char) __builtin_altivec_vsel_4si ((__vector signed int) (a1), (__vector signed int) (a2), (__vector signed int) (a3))), \
    __builtin_altivec_compiletime_error ("vec_sel")))))))))))))))))))))

#define vec_sl(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sl")))))))

#define vec_vslw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vslw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vslw")))

#define vec_vslh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vslh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vslh")))

#define vec_vslb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vslb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vslb")))

#define vec_sld(a1, a2, a3) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsldoi_4si ((__vector signed int) (a1), (__vector signed int) (a2), (const int) (a3))), \
    __builtin_altivec_compiletime_error ("vec_sld"))))))))))))

#define vec_sll(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned short, (a2)), \
      ((__vector signed int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \
      ((__vector signed int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned int, (a2)), \
      ((__vector signed short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \
      ((__vector signed short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned int, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned short, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned int, (a2)), \
      ((__vector signed char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned short, (a2)), \
      ((__vector signed char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsl ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sll")))))))))))))))))))))))))))))))

#define vec_slo(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector signed char, (a2)), \
      ((__vector float) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector unsigned char, (a2)), \
      ((__vector float) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed char, (a2)), \
      ((__vector signed int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \
      ((__vector signed int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector signed char, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed char, (a2)), \
      ((__vector signed short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \
      ((__vector signed short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector signed char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector signed char, (a2)), \
      ((__vector __pixel) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \
      ((__vector __pixel) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector signed char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vslo ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_slo")))))))))))))))))

#define vec_splat(a1, a2) \
__ch (__un_args_eq (__vector signed char, (a1)), \
      ((__vector signed char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector unsigned char, (a1)), \
      ((__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      ((__vector __bool char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      ((__vector signed short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector unsigned short, (a1)), \
      ((__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      ((__vector __bool short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      ((__vector __pixel) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector signed int, (a1)), \
      ((__vector signed int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector unsigned int, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector __bool int, (a1)), \
      ((__vector __bool int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_splat"))))))))))))

#define vec_vspltw(a1, a2) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector __bool int, (a1)), \
      ((__vector __bool int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector signed int, (a1)), \
      ((__vector signed int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector unsigned int, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vspltw ((__vector signed int) (a1), (const int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vspltw")))))

#define vec_vsplth(a1, a2) \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      ((__vector __bool short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      ((__vector signed short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector unsigned short, (a1)), \
      ((__vector unsigned short) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      ((__vector __pixel) __builtin_altivec_vsplth ((__vector signed short) (a1), (const int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsplth")))))

#define vec_vspltb(a1, a2) \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      ((__vector __bool char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector signed char, (a1)), \
      ((__vector signed char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \
__ch (__un_args_eq (__vector unsigned char, (a1)), \
      ((__vector unsigned char) __builtin_altivec_vspltb ((__vector signed char) (a1), (const int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vspltb"))))

#define vec_splat_s8(a1) ((__vector signed char) __builtin_altivec_vspltisb (a1))

#define vec_splat_s16(a1) ((__vector signed short) __builtin_altivec_vspltish (a1))

#define vec_splat_s32(a1) ((__vector signed int) __builtin_altivec_vspltisw (a1))

#define vec_splat_u8(a1) ((__vector unsigned char) __builtin_altivec_vspltisb (a1))

#define vec_splat_u16(a1) ((__vector unsigned short) __builtin_altivec_vspltish (a1))

#define vec_splat_u32(a1) ((__vector unsigned int) __builtin_altivec_vspltisw (a1))

#define vec_sr(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sr")))))))

#define vec_vsrw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsrw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsrw")))

#define vec_vsrh(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsrh ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsrh")))

#define vec_vsrb(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsrb ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsrb")))

#define vec_sra(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sra")))))))

#define vec_vsraw(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsraw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsraw")))

#define vec_vsrah(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsrah ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsrah")))

#define vec_vsrab(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsrab ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsrab")))

#define vec_srl(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned short, (a2)), \
      ((__vector signed int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \
      ((__vector signed int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool int) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned int, (a2)), \
      ((__vector signed short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \
      ((__vector signed short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool short) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned int, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned short, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned int, (a2)), \
      ((__vector signed char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned short, (a2)), \
      ((__vector signed char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned int, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned short, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vsr ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_srl")))))))))))))))))))))))))))))))

#define vec_sro(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector signed char, (a2)), \
      ((__vector float) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector unsigned char, (a2)), \
      ((__vector float) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed char, (a2)), \
      ((__vector signed int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector unsigned char, (a2)), \
      ((__vector signed int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector signed char, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed char, (a2)), \
      ((__vector signed short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector unsigned char, (a2)), \
      ((__vector signed short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector signed char, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector unsigned char, (a2)), \
      ((__vector __pixel) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector signed char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector unsigned char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector signed char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsro ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sro")))))))))))))))))

#define vec_st(a1, a2, a3) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), unsigned char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed char, (a1), signed char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool char, (a1), unsigned char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool char, (a1), signed char, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), unsigned short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed short, (a1), short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool short, (a1), unsigned short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool short, (a1), short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __pixel, (a1), unsigned short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __pixel, (a1), short, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), unsigned int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed int, (a1), int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool int, (a1), unsigned int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool int, (a1), int, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector float, (a1), float, *(a3)), \
  __builtin_altivec_stvx ((__vector signed int) (a1), (a2), (void *) (a3)), \
__builtin_altivec_compiletime_error ("vec_st")))))))))))))))))))))))))))

#define vec_stl(a1, a2, a3) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), unsigned char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed char, (a1), signed char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool char, (a1), unsigned char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool char, (a1), signed char, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), unsigned short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed short, (a1), short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool short, (a1), unsigned short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool short, (a1), short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __pixel, (a1), unsigned short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __pixel, (a1), short, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), unsigned int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector signed int, (a1), int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool int, (a1), unsigned int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector __bool int, (a1), int, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__ch (__bin_args_eq (__vector float, (a1), float, *(a3)), \
  __builtin_altivec_stvxl ((__vector signed int) (a1), (a2), (void *) (a3)), \
__builtin_altivec_compiletime_error ("vec_stl")))))))))))))))))))))))))))

#define vec_ste(a, b, c) \
__ch (__bin_args_eq (__vector unsigned char, (a), unsigned char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector signed char, (a), signed char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __bool char, (a), unsigned char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __bool char, (a), signed char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector unsigned short, (a), unsigned short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector signed short, (a), short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __bool short, (a), unsigned short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __bool short, (a), short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __pixel, (a), unsigned short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __pixel, (a), short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector unsigned int, (a), unsigned int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector signed int, (a), int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __bool int, (a), unsigned int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector __bool int, (a), int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \
__ch (__bin_args_eq (__vector float, (a), float, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (void *) (c)), \
     __builtin_altivec_compiletime_error ("vec_ste"))))))))))))))))

#define vec_stvewx(a, b, c) \
__ch (__bin_args_eq (__vector unsigned int, (a), unsigned int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \
__ch (__bin_args_eq (__vector signed int, (a), int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __bool int, (a), unsigned int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __bool int, (a), int, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \
__ch (__bin_args_eq (__vector float, (a), float, *(c)), \
     __builtin_altivec_stvewx ((__vector signed int) (a), (b), (c)), \
__builtin_altivec_compiletime_error ("vec_stvewx"))))))

#define vec_stvehx(a, b, c) \
__ch (__bin_args_eq (__vector unsigned short, (a), unsigned short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \
__ch (__bin_args_eq (__vector signed short, (a), short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __bool short, (a), unsigned short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __bool short, (a), short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __pixel, (a), unsigned short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __pixel, (a), short, *(c)), \
     __builtin_altivec_stvehx ((__vector signed short) (a), (b), (c)), \
__builtin_altivec_compiletime_error ("vec_stvehx")))))))

#define vec_stvebx(a, b, c) \
__ch (__bin_args_eq (__vector unsigned char, (a), unsigned char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \
__ch (__bin_args_eq (__vector signed char, (a), signed char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __bool char, (a), unsigned char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \
__ch (__bin_args_eq (__vector __bool char, (a), signed char, *(c)), \
      __builtin_altivec_stvebx ((__vector signed char) (a), (b), (c)), \
__builtin_altivec_compiletime_error ("vec_stvebx")))))

#define vec_sub(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vsubfp ((__vector float) (a1), (__vector float) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sub"))))))))))))))))))))

#define vec_vsubfp(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vsubfp ((__vector float) (a1), (__vector float) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubfp"))

#define vec_vsubuwm(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuwm ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubuwm")))))))

#define vec_vsubuhm(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhm ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubuhm")))))))

#define vec_vsububm(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububm ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsububm")))))))

#define vec_subc(a1, a2) \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
  ((__vector unsigned int) __builtin_altivec_vsubcuw ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_subc"))

#define vec_subs(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_subs")))))))))))))))))))

#define vec_vsubsws(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsubsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubsws"))))

#define vec_vsubuws(a1, a2) \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsubuws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubuws"))))

#define vec_vsubshs(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vsubshs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubshs"))))

#define vec_vsubuhs(a1, a2) \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vsubuhs ((__vector signed short) (a1), (__vector signed short) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubuhs"))))

#define vec_vsubsbs(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vsubsbs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsubsbs"))))

#define vec_vsububs(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vsububs ((__vector signed char) (a1), (__vector signed char) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsububs"))))

#define vec_sum4s(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_sum4s"))))

#define vec_vsum4shs(a1, a2) \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsum4shs ((__vector signed short) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsum4shs"))

#define vec_vsum4sbs(a1, a2) \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsum4sbs ((__vector signed char) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsum4sbs"))

#define vec_vsum4ubs(a1, a2) \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vsum4ubs ((__vector signed char) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_vsum4ubs"))

#define vec_sum2s(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsum2sws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_sum2s"))

#define vec_sums(a1, a2) \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vsumsws ((__vector signed int) (a1), (__vector signed int) (a2))), \
__builtin_altivec_compiletime_error ("vec_sums"))

#define vec_trunc(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      ((__vector float) __builtin_altivec_vrfiz ((__vector float) (a1))), \
__builtin_altivec_compiletime_error ("vec_trunc"))

#define vec_unpackh(a1) \
__ch (__un_args_eq (__vector signed char, (a1)), \
      ((__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      ((__vector __bool short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) (a1))), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      ((__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      ((__vector __bool int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \
    __builtin_altivec_compiletime_error ("vec_unpackh"))))))

#define vec_vupkhsh(a1) \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      ((__vector __bool int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      ((__vector signed int) __builtin_altivec_vupkhsh ((__vector signed short) (a1))), \
__builtin_altivec_compiletime_error ("vec_vupkhsh")))

#define vec_vupkhpx(a1) \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vupkhpx ((__vector signed short) (a1))), \
__builtin_altivec_compiletime_error ("vec_vupkhpx"))

#define vec_vupkhsb(a1) \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      ((__vector __bool short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \
__ch (__un_args_eq (__vector signed char, (a1)), \
      ((__vector signed short) __builtin_altivec_vupkhsb ((__vector signed char) (a1))), \
__builtin_altivec_compiletime_error ("vec_vupkhsb")))

#define vec_unpackl(a1) \
__ch (__un_args_eq (__vector signed char, (a1)), \
      ((__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      ((__vector __bool short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) (a1))), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      ((__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      ((__vector __bool int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \
    __builtin_altivec_compiletime_error ("vec_unpackl"))))))

#define vec_vupklsh(a1) \
__ch (__un_args_eq (__vector __bool short, (a1)), \
      ((__vector __bool int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \
__ch (__un_args_eq (__vector signed short, (a1)), \
      ((__vector signed int) __builtin_altivec_vupklsh ((__vector signed short) (a1))), \
__builtin_altivec_compiletime_error ("vec_vupklsh")))

#define vec_vupklpx(a1) \
__ch (__un_args_eq (__vector __pixel, (a1)), \
      ((__vector unsigned int) __builtin_altivec_vupklpx ((__vector signed short) (a1))), \
__builtin_altivec_compiletime_error ("vec_vupklpx"))

#define vec_vupklsb(a1) \
__ch (__un_args_eq (__vector __bool char, (a1)), \
      ((__vector __bool short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \
__ch (__un_args_eq (__vector signed char, (a1)), \
      ((__vector signed short) __builtin_altivec_vupklsb ((__vector signed char) (a1))), \
__builtin_altivec_compiletime_error ("vec_vupklsb")))

#define vec_xor(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector float, (a1), __vector __bool int, (a2)), \
      ((__vector float) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector float, (a2)), \
      ((__vector float) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      ((__vector __bool int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      ((__vector signed int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      ((__vector signed int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      ((__vector unsigned int) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      ((__vector __bool short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      ((__vector signed short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      ((__vector signed short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      ((__vector unsigned short) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      ((__vector __bool char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      ((__vector signed char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      ((__vector signed char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      ((__vector unsigned char) __builtin_altivec_vxor ((__vector signed int) (a1), (__vector signed int) (a2))), \
    __builtin_altivec_compiletime_error ("vec_xor")))))))))))))))))))))))))

/* Predicates.  */

#define vec_all_eq(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_LT, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_eq"))))))))))))))))))))))))

#define vec_all_ge(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_LT, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_ge"))))))))))))))))))))

#define vec_all_gt(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_LT, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_gt"))))))))))))))))))))

#define vec_all_in(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_in"))

#define vec_all_le(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_LT, (__vector float) (a2), (__vector float) (a1)), \
    __builtin_altivec_compiletime_error ("vec_all_le"))))))))))))))))))))

#define vec_all_lt(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_LT, (__vector float) (a2), (__vector float) (a1)), \
    __builtin_altivec_compiletime_error ("vec_all_lt"))))))))))))))))))))

#define vec_all_nan(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)), \
    __builtin_altivec_compiletime_error ("vec_all_nan"))

#define vec_all_ne(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_ne"))))))))))))))))))))))))

#define vec_all_nge(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_nge"))

#define vec_all_ngt(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)), \
    __builtin_altivec_compiletime_error ("vec_all_ngt"))

#define vec_all_nle(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)), \
    __builtin_altivec_compiletime_error ("vec_all_nle"))

#define vec_all_nlt(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)), \
    __builtin_altivec_compiletime_error ("vec_all_nlt"))

#define vec_all_numeric(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1)), \
    __builtin_altivec_compiletime_error ("vec_all_numeric"))

#define vec_any_eq(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_eq"))))))))))))))))))))))))

#define vec_any_ge(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_ge"))))))))))))))))))))

#define vec_any_gt(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_gt"))))))))))))))))))))

#define vec_any_le(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (__vector float) (a2), (__vector float) (a1)), \
    __builtin_altivec_compiletime_error ("vec_any_le"))))))))))))))))))))

#define vec_any_lt(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (__vector signed char) (a2), (__vector signed char) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (__vector signed short) (a2), (__vector signed short) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (__vector signed int) (a2), (__vector signed int) (a1)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (__vector float) (a2), (__vector float) (a1)), \
    __builtin_altivec_compiletime_error ("vec_any_lt"))))))))))))))))))))

#define vec_any_nan(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (a1), (a1)), \
    __builtin_altivec_compiletime_error ("vec_any_nan"))

#define vec_any_ne(a1, a2) \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector signed char, (a1), __vector signed char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector unsigned char, (a1), __vector unsigned char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool char, (a1), __vector __bool char, (a2)), \
      __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (__vector signed char) (a1), (__vector signed char) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector signed short, (a1), __vector signed short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector unsigned short, (a1), __vector unsigned short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool short, (a1), __vector __bool short, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __pixel, (a1), __vector __pixel, (a2)), \
      __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (__vector signed short) (a1), (__vector signed short) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector signed int, (a1), __vector signed int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector unsigned int, (a1), __vector unsigned int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector __bool int, (a1), __vector __bool int, (a2)), \
      __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (__vector signed int) (a1), (__vector signed int) (a2)), \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (__vector float) (a1), (__vector float) (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_ne"))))))))))))))))))))))))

#define vec_any_nge(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_nge"))

#define vec_any_ngt(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_ngt"))

#define vec_any_nle(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)), \
    __builtin_altivec_compiletime_error ("vec_any_nle"))

#define vec_any_nlt(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)), \
    __builtin_altivec_compiletime_error ("vec_any_nlt"))

#define vec_any_numeric(a1) \
__ch (__un_args_eq (__vector float, (a1)), \
      __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)), \
    __builtin_altivec_compiletime_error ("vec_any_numeric"))

#define vec_any_out(a1, a2) \
__ch (__bin_args_eq (__vector float, (a1), __vector float, (a2)), \
      __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2)), \
    __builtin_altivec_compiletime_error ("vec_any_out"))


#endif /* __cplusplus */
/* APPLE LOCAL AltiVec */
#endif /* __APPLE_ALTIVEC__ */

#endif /* _ALTIVEC_H */
