This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

altivec: even more boring altivec.h patches


more patches from the 
"so-boring-i-can't-believe-i'm-doing-this-i-hate-my-job-somebody-kill-me"
department.

it turns out a bit of unclear wording in the altivec specs mention that
we must have overloaded accessor functions for the individual instructions.

ie.  we must have vec_vaddubm(), vec_vadduhm(), vec_adduwm(), ad nauseum 
functions in addition to vec_add().  don't ask me why.  i didn't write
the specs.

this is a royal pita, and i can't wait till we merge the front ends
so we can get rid of the __builtin_choose_expr crap.

sigh.... i'm not bitter, i swear.

i also cleaned up a few things i saw as ambiguous.

committed as painfully obvious to branch and trunk.

aldy

2002-04-24  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Cleanup file.  Add non individual
	variants.
	(vec_vaddubm): New.
	(vec_vadduhm): New.
	(vec_vadduwm): New.
	(vec_vaddfp): New.
	(vec_vaddcuw): New.
	(vec_vaddubs): New.
	(vec_vaddsbs): New.
	(vec_vadduhs): New.
	(vec_vadduws): New.
	(vec_vaddsws): New.
	(vec_vand): New.
	(vec_vandc): New.
	(vec_vavgub): New.
	(vec_vavgsb): New.
	(vec_vavguh): New.
	(vec_vavgsh): New.
	(vec_vavguw): New.
	(vec_vavgsw): New.
	(vec_vrfip): New.
	(vec_vcmpbfp): New.
	(vec_vcmpequb): New.
	(vec_vcmpequh): New.
	(vec_vcmpequw): New.
	(vec_vcmpeqfp): New.
	(vec_vcmpgefp): New.
	(vec_vcmpgtub): New.
	(vec_vcmpgtsb): New.
	(vec_vcmpgtuh): New.
	(vec_vcmpgtsh): New.
	(vec_vcmpgtuw): New.
	(vec_vcmpgtsw): New.
	(vec_vcmpgtfp): New.
	(vec_vcmpgefp): New.
	(vec_vcfux): New.
	(vec_vcfsx): New.
	(vec_vctsxs): New.
	(vec_vctuxs): New.
	(vec_vexptefp): New.
	(vec_vrfim): New.
	(vec_lvx): New.
	(vec_lvebx): New.
	(vec_lvehx): New.
	(vec_lde): Add vector float variant.
	(vec_lvewx): New.
	(vec_lvxl): New.
	(vec_vlogefp): New.
	(vec_vmaddfp): New.
	(vec_vmhaddshs): New.
	(vec_vmaxub): New.
	(vec_vmaxsb): New.
	(vec_vmaxuh): New.
	(vec_vmaxsh): New.
	(vec_vmaxuw): New.
	(vec_vmaxsw): New.
	(vec_vmaxsw): New.
	(vec_vmaxfp): New.
	(vec_vmrghb): New.
	(vec_vmrghh): New.
	(vec_vmrghw): New.
	(vec_vmrglb): New.
	(vec_vmrglh): New.
	(vec_vmrglw): New.
	(vec_vminub): New.
	(vec_vminsb): New.
	(vec_vminuh): New.
	(vec_vminsh): New.
	(vec_vminuw): New.
	(vec_vminsw): New.
	(vec_vminfp): New.
	(vec_vmladduhm): New.
	(vec_vmhraddshs): New.
	(vec_msumubm): New.
	(vec_vmsummbm): New.
	(vec_vmsumuhm): New.
	(vec_vmsumshm): New.
	(vec_vmsumuhs): New.
	(vec_vmsumshs): New.
	(vec_vmuleub): New.
	(vec_vmulesb): New.
	(vec_vmuleuh): New.
	(vec_vmulesh): New.
	(vec_vmuloub): New.
	(vec_mulosb): New.
	(vec_vmulouh): New.
	(vec_vmulosh): New.
	(vec_vnmsubfp): New.
	(vec_vnor): New.
	(vec_vor): New.
	(vec_vpkuhum): New.
	(vec_vpkuwum): New.
	(vec_vpkpx): New.
	(vec_vpkuhus): New.
	(vec_vpkshss): New.
	(vec_vpkuwus): New.
	(vec_vpkswss): New.
	(vec_vpkshus): New.
	(vec_vpkswus): New.
	(vec_vperm): New.
	(vec_vrefp): New.
	(vec_vrlb): New.
	(vec_vrlh): New.
	(vec_vrlw): New.
	(vec_vrfin): New.
	(vec_vrsqrtefp): New.
	(vec_vsel): New.
	(vec_vslb): New.
	(vec_vslh): New.
	(vec_vslw): New.
	(vec_vsldoi): New.
	(vec_vsl): New.
	(vec_vslo): New.
	(vec_vspltb): New.
	(vec_vsplth): New.
	(vec_vspltw): New.
	(vec_vspltisb): New.
	(vec_vspltish): New.
	(vec_vspltisw): New.
	(vec_vsrb): New.
	(vec_vsrh): New.
	(vec_vsrw): New.
	(vec_vsrab): New.
	(vec_vsrah): New.
	(vec_vsraw): New.
	(vec_vsr): New.
	(vec_vsro): New.
	(vec_stvx): New.
	(vec_stvebx): New.
	(vec_stvehx): New.
	(vec_stvewx): New.
	(vec_stvxl): New.
	(vec_vsububm): New.
	(vec_vsubuhm): New.
	(vec_vsubuwm): New.
	(vec_vsubfp): New.
	(vec_vsubcuw): New.
	(vec_vsububs): New.
	(vec_vsubsbs): New.
	(vec_vsubuhs): New.
	(vec_vsubshs): New.
	(vec_vsubuws): New.
	(vec_vsubsws): New.
	(vec_vsum4ubs): New.
	(vec_vsum4sbs): New.
	(vec_vsum4shs): New.
	(vec_vsum2sws): New.
	(vec_vsumsws): New.
	(vec_vrfiz): New.
	(vec_vupkhsb): New.
	(vec_vupkhpx): New.
	(vec_vupkhsh): New.
	(vec_vupklsb): New.
	(vec_vupklpx): New.
	(vec_vupklsh): New.
	(vec_vxor): New.


Index: config/rs6000/altivec.h
===================================================================
RCS file: /cvs/uberbaum/gcc/config/rs6000/altivec.h,v
retrieving revision 1.17
diff -c -p -r1.17 altivec.h
*** config/rs6000/altivec.h	23 Apr 2002 07:32:08 -0000	1.17
--- config/rs6000/altivec.h	24 Apr 2002 10:54:32 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 44,50 ****
  /* You are allowed to undef this for C++ compatability.  */
  #define vector __vector
  
! #define bool unsigned
  #define pixel short
  #define __pixel short
  
--- 44,50 ----
  /* You are allowed to undef this for C++ compatability.  */
  #define vector __vector
  
! #define bool signed
  #define pixel short
  #define __pixel short
  
*************** extern int __altivec_link_error_invalid_
*** 72,77 ****
--- 72,121 ----
  
  #define __ch(x, y, z)	__builtin_choose_expr (x, y, z)
  
+ /* 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
  
  /* Prototypes for builtins that take literals and must always be
*************** vec_add (vector float a1, vector float a
*** 232,237 ****
--- 276,367 ----
    return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
  }
  
+ /* vec_vaddfp */
+ 
+ inline vector float
+ vec_vaddfp (vector float a1, vector float a2)
+ {
+   return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
+ }
+ 
+ /* vec_vadduwm */
+ 
+ inline vector signed int
+ vec_vadduwm (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vadduwm (vector signed int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vadduwm (vector unsigned int a1, vector signed int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vadduhm */
+ 
+ inline vector signed short
+ vec_vadduhm (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vadduhm (vector signed short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vadduhm (vector unsigned short a1, vector signed short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vaddubm */
+ 
+ inline vector signed char
+ vec_vaddubm (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vaddubm (vector signed char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vaddubm (vector unsigned char a1, vector signed char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_addc */
  
  inline vector unsigned int
*************** vec_adds (vector signed int a1, vector s
*** 314,319 ****
--- 444,532 ----
    return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
  }
  
+ /* vec_vaddsws */
+ 
+ inline vector signed int
+ vec_vaddsws (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vadduws */
+ 
+ inline vector unsigned int
+ vec_vadduws (vector signed int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vadduws (vector unsigned int a1, vector signed int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vadduws (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vaddshs */
+ inline vector signed short
+ vec_vaddshs (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vadduhs */
+ 
+ inline vector unsigned short
+ vec_vadduhs (vector signed short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vadduhs (vector unsigned short a1, vector signed short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vaddsbs */
+ 
+ inline vector signed char
+ vec_vaddsbs (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ /* vec_vaddubs */
+ 
+ inline vector unsigned char
+ vec_vaddubs (vector signed char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vaddubs (vector unsigned char a1, vector signed char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_and */
  
  inline vector float
*************** vec_avg (vector signed int a1, vector si
*** 536,541 ****
--- 749,802 ----
    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_cmpeq (vector float a1, vector float
*** 596,601 ****
--- 857,912 ----
    return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
  }
  
+ /* vec_vcmpeqfp */
+ 
+ inline vector signed int
+ vec_vcmpeqfp (vector float a1, vector float a2)
+ {
+   return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
+ }
+ 
+ /* vec_vcmpequw */
+ 
+ inline vector signed int
+ vec_vcmpequw (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector signed int
+ vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vcmpequh */
+ 
+ inline vector signed short
+ vec_vcmpequh (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector signed short
+ vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vcmpequb */
+ 
+ inline vector signed char
+ vec_vcmpequb (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector signed char
+ vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_cmpge */
  
  inline vector signed int
*************** vec_cmpgt (vector float a1, vector float
*** 648,653 ****
--- 959,1020 ----
    return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
  }
  
+ /* vec_vcmpgtfp */
+ 
+ inline vector signed int
+ vec_vcmpgtfp (vector float a1, vector float a2)
+ {
+   return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
+ }
+ 
+ /* vec_vcmpgtsw */
+ 
+ inline vector signed int
+ vec_vcmpgtsw (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vcmpgtuw */
+ 
+ inline vector signed int
+ vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vcmpgtsh */
+ 
+ inline vector signed short
+ vec_cmpgtsh (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vcmpgtuh */
+ 
+ inline vector signed short
+ vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vcmpgtsb */
+ 
+ inline vector signed char
+ vec_vcmpgtsb (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ /* vec_vcmpgtub */
+ 
+ inline vector signed char
+ vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_cmple */
  
  inline vector signed int
*************** vec_ctf (vector unsigned int a1, const c
*** 709,725 ****
  }
  
  inline vector float
! vec_vcfux (vector unsigned int a1, const char a2)
  {
!   return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
  }
  
  inline vector float
! vec_ctf (vector signed int a1, const char a2)
  {
    return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
  }
  
  /* vec_cts */
  
  inline vector signed int
--- 1076,1102 ----
  }
  
  inline vector float
! vec_ctf (vector signed int a1, const char a2)
  {
!   return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
  }
  
+ /* vec_vcfsx */
+ 
  inline vector float
! vec_vcfsx (vector signed int a1, const char a2)
  {
    return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
  }
  
+ /* vec_vcfux */
+ 
+ inline vector float
+ vec_vcfux (vector unsigned int a1, const char a2)
+ {
+   return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
+ }
+ 
  /* vec_cts */
  
  inline vector signed int
*************** vec_lde (int a1, unsigned int *a2)
*** 930,935 ****
--- 1307,1360 ----
    return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
  }
  
+ /* vec_lvewx */
+ 
+ inline vector float
+ vec_lvewx (int a1, float *a2)
+ {
+   return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
+ }
+ 
+ inline vector signed int
+ vec_lvewx (int a1, signed int *a2)
+ {
+   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_lvewx (int a1, unsigned int *a2)
+ {
+   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
+ }
+ 
+ /* vec_lvehx */
+ 
+ inline vector signed short
+ vec_lvehx (int a1, signed short *a2)
+ {
+   return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_lvehx (int a1, unsigned short *a2)
+ {
+   return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
+ }
+ 
+ /* vec_lvebx */
+ 
+ inline vector signed char
+ vec_lvebx (int a1, signed char *a2)
+ {
+   return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_lvebx (int a1, unsigned char *a2)
+ {
+   return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
+ }
+ 
  /* vec_ldl */
  
  inline vector float
*************** vec_madd (vector float a1, vector float 
*** 1121,1132 ****
  }
  
  
- inline vector float
- vec_vmaddfp (vector float a1, vector float a2, vector float a3)
- {
-   return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
- }
- 
  /* vec_madds */
  
  inline vector signed short
--- 1546,1551 ----
*************** vec_max (vector float a1, vector float a
*** 1215,1220 ****
--- 1634,1731 ----
    return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
  }
  
+ /* vec_vmaxfp */
+ 
+ inline vector float
+ vec_vmaxfp (vector float a1, vector float a2)
+ {
+   return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
+ }
+ 
+ /* vec_vmaxsw */
+ 
+ inline vector signed int
+ vec_vmaxsw (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vmaxuw */
+ 
+ inline vector unsigned int
+ vec_vmaxuw (vector signed int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vmaxuw (vector unsigned int a1, vector signed int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vmaxsh */
+ 
+ inline vector signed short
+ vec_vmaxsh (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vmaxuh */
+ 
+ inline vector unsigned short
+ vec_vmaxuh (vector signed short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vmaxuh (vector unsigned short a1, vector signed short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vmaxsb */
+ 
+ inline vector signed char
+ vec_vmaxsb (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ /* vec_vmaxub */
+ 
+ inline vector unsigned char
+ vec_vmaxub (vector signed char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vmaxub (vector unsigned char a1, vector signed char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_mergeh */
  
  inline vector signed char
*************** vec_mergeh (vector unsigned int a1, vect
*** 1259,1264 ****
--- 1770,1823 ----
    return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
  }
  
+ /* vec_vmrghw */
+ 
+ inline vector float
+ vec_vmrghw (vector float a1, vector float a2)
+ {
+   return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector signed int
+ vec_vmrghw (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vmrghh */
+ 
+ inline vector signed short
+ vec_vmrghh (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vmrghb */
+ 
+ inline vector signed char
+ vec_vmrghb (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_mergel */
  
  inline vector signed char
*************** vec_mergel (vector unsigned int a1, vect
*** 1303,1308 ****
--- 1862,1915 ----
    return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
  }
  
+ /* vec_vmrglw */
+ 
+ inline vector float
+ vec_vmrglw (vector float a1, vector float a2)
+ {
+   return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector signed int
+ vec_vmrglw (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vmrglh */
+ 
+ inline vector signed short
+ vec_vmrglh (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vmrglb */
+ 
+ inline vector signed char
+ vec_vmrglb (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_mfvscr */
  
  inline vector unsigned short
*************** vec_min (vector float a1, vector float a
*** 1391,1457 ****
    return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) 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_msums */
  
  inline vector unsigned int
  vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
--- 1998,2188 ----
    return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
  }
  
! /* vec_vminfp */
  
! inline vector float
! vec_vminfp (vector float a1, vector float a2)
  {
!   return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
  }
  
! /* vec_vminsw */
! 
! inline vector signed int
! vec_vminsw (vector signed int a1, vector signed int a2)
  {
!   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
  }
  
! /* vec_vminuw */
! 
! inline vector unsigned int
! vec_vminuw (vector signed int a1, vector unsigned int a2)
  {
!   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
  }
  
! inline vector unsigned int
! vec_vminuw (vector unsigned int a1, vector signed int a2)
  {
!   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
  }
  
! inline vector unsigned int
! vec_vminuw (vector unsigned int a1, vector unsigned int a2)
! {
!   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
! }
! 
! /* vec_vminsh */
  
  inline vector signed short
! vec_vminsh (vector signed short a1, vector signed short a2)
  {
!   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
  }
  
! /* vec_vminuh */
  
! inline vector unsigned short
! vec_vminuh (vector signed short a1, vector unsigned short a2)
  {
!   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
  }
  
! inline vector unsigned short
! vec_vminuh (vector unsigned short a1, vector signed short a2)
  {
!   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
  }
  
! inline vector unsigned short
! vec_vminuh (vector unsigned short a1, vector unsigned short a2)
  {
!   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
  }
  
! /* vec_vminsb */
! 
! inline vector signed char
! vec_vminsb (vector signed char a1, vector signed char a2)
  {
!   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
  }
  
! /* vec_vminub */
! 
! inline vector unsigned char
! vec_vminub (vector signed char a1, vector unsigned char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
! }
! 
! inline vector unsigned char
! vec_vminub (vector unsigned char a1, vector signed char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
! }
! 
! inline vector unsigned char
! vec_vminub (vector unsigned char a1, vector unsigned char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
! }
! 
! /* vec_mladd */
! 
! inline vector signed short
! vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
! {
!   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
! }
! 
! inline vector signed short
! vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
! {
!   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
! }
! 
! inline vector signed short
! vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
! {
!   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
! }
! 
! inline vector unsigned short
! vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
! {
!   return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
! }
! 
! /* vec_mradds */
! 
! inline vector signed short
! vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
! {
!   return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
! }
! 
! /* vec_msum */
! 
! inline vector unsigned int
! vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
! {
!   return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
! }
! 
! inline vector signed int
! vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
! {
!   return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
! }
! 
! inline vector unsigned int
! vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
! {
!   return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
! }
! 
! inline vector signed int
! vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
! {
!   return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
! }
! 
! /* vec_vmsumshm */
! 
! inline vector signed int
! vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
! {
!   return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
! }
! 
! /* vec_vmsumuhm */
! 
! inline vector unsigned int
! vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
! {
!   return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
! }
! 
! /* vec_vmsummbm */
! 
! inline vector signed int
! vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
! {
!   return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
! }
! 
! /* vec_vmsumubm */
! 
! inline vector unsigned int
! vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
! {
!   return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
! }
! 
! /* vec_msums */
  
  inline vector unsigned int
  vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
*************** vec_msums (vector signed short a1, vecto
*** 1465,1470 ****
--- 2196,2217 ----
    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_mule (vector signed short a1, vector
*** 1529,1534 ****
--- 2276,2304 ----
    return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
  }
  
+ /* vec_vmulesh */
+ 
+ inline vector signed int
+ vec_vmulesh (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vmuleuh */
+ 
+ inline vector unsigned int
+ vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vmuleub */
+ inline vector unsigned short
+ vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_mulo */
  
  inline vector unsigned short
*************** vec_mulo (vector signed short a1, vector
*** 1555,1560 ****
--- 2325,2362 ----
    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_pack (vector unsigned int a1, vector
*** 1725,1730 ****
--- 2527,2560 ----
    return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
  }
  
+ /* vec_vpkuwum */
+ 
+ inline vector signed short
+ vec_vpkuwum (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vpkuhum */
+ 
+ inline vector signed char
+ vec_vpkuhum (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
  /* vec_packpx */
  
  inline vector signed short
*************** vec_packs (vector signed int a1, vector 
*** 1759,1764 ****
--- 2589,2626 ----
    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 signed int a1, vector
*** 1785,1790 ****
--- 2647,2668 ----
    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_rl (vector unsigned int a1, vector u
*** 1875,1880 ****
--- 2753,2800 ----
    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_sl (vector unsigned int a1, vector u
*** 2015,2035 ****
    return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
  }
  
! /* vec_sld */
  
! inline vector float
! vec_sld (vector float a1, vector float a2, const char a3)
  {
!   return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
  }
  
! inline vector float
! vec_vsldoi (vector float a1, vector float a2, const char a3)
  {
!   return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
  }
  
! inline vector signed int
  vec_sld (vector signed int a1, vector signed int a2, const char a3)
  {
    return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
--- 2935,2991 ----
    return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
  }
  
! /* vec_vslw */
  
! inline vector signed int
! vec_vslw (vector signed int a1, vector unsigned int a2)
  {
!   return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
  }
  
! inline vector unsigned int
! vec_vslw (vector unsigned int a1, vector unsigned int a2)
  {
!   return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
  }
  
! /* vec_vslh */
! 
! inline vector signed short
! vec_vslh (vector signed short a1, vector unsigned short a2)
! {
!   return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
! }
! 
! inline vector unsigned short
! vec_vslh (vector unsigned short a1, vector unsigned short a2)
! {
!   return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
! }
! 
! /* vec_vslb */
! 
! inline vector signed char
! vec_vslb (vector signed char a1, vector unsigned char a2)
! {
!   return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
! }
! 
! inline vector unsigned char
! vec_vslb (vector unsigned char a1, vector unsigned char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
! }
! 
! /* vec_sld */
! 
! inline vector float
! vec_sld (vector float a1, vector float a2, const char a3)
! {
!   return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
! }
! 
! inline vector signed int
  vec_sld (vector signed int a1, vector signed int a2, const char a3)
  {
    return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
*************** vec_splat (vector unsigned int a1, const
*** 2305,2310 ****
--- 3261,3314 ----
    return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
  }
  
+ /* vec_vspltw */
+ 
+ inline vector float
+ vec_vspltw (vector float a1, const char a2)
+ {
+   return (vector float) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
+ }
+ 
+ inline vector signed int
+ vec_vspltw (vector signed int a1, const char a2)
+ {
+   return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vspltw (vector unsigned int a1, const char a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
+ }
+ 
+ /* vec_vsplth */
+ 
+ inline vector signed short
+ vec_vsplth (vector signed short a1, const char a2)
+ {
+   return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vsplth (vector unsigned short a1, const char a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
+ }
+ 
+ /* vec_vspltb */
+ 
+ inline vector signed char
+ vec_vspltb (vector signed char a1, const char a2)
+ {
+   return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vspltb (vector unsigned char a1, const char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
+ }
+ 
  /* vec_splat_s8 */
  
  inline vector signed char
*************** vec_sr (vector unsigned int a1, vector u
*** 2391,2396 ****
--- 3395,3442 ----
    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 unsigned int a1, vector 
*** 2429,2434 ****
--- 3475,3522 ----
    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_ste (vector unsigned int a1, int a2,
*** 2713,2718 ****
--- 3801,3854 ----
    __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
  }
  
+ /* vec_stvewx */
+ 
+ inline void
+ vec_stvewx (vector float a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+ }
+ 
+ inline void
+ vec_stvewx (vector signed int a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+ }
+ 
+ inline void
+ vec_stvewx (vector unsigned int a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+ }
+ 
+ /* vec_stvehx */
+ 
+ inline void
+ vec_stvehx (vector signed short a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+ }
+ 
+ inline void
+ vec_stvehx (vector unsigned short a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+ }
+ 
+ /* vec_stvebx */
+ 
+ inline void
+ vec_stvebx (vector signed char a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
+ }
+ 
+ inline void
+ vec_stvebx (vector unsigned char a1, int a2, void *a3)
+ {
+   __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
+ }
+ 
  /* vec_stl */
  
  inline void
*************** vec_sub (vector float a1, vector float a
*** 2837,2842 ****
--- 3973,4064 ----
    return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
  }
  
+ /* vec_vsubfp */
+ 
+ inline vector float
+ vec_vsubfp (vector float a1, vector float a2)
+ {
+   return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
+ }
+ 
+ /* vec_vsubuwm */
+ 
+ inline vector signed int
+ vec_vsubuwm (vector signed int a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vsubuwm (vector signed int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vsubuwm (vector unsigned int a1, vector signed int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ inline vector unsigned int
+ vec_vsubuwm (vector unsigned int a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vsubuhm */
+ 
+ inline vector signed short
+ vec_vsubuhm (vector signed short a1, vector signed short a2)
+ {
+   return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vsubuhm (vector signed short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vsubuhm (vector unsigned short a1, vector signed short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ inline vector unsigned short
+ vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
+ {
+   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+ }
+ 
+ /* vec_vsububm */
+ 
+ inline vector signed char
+ vec_vsububm (vector signed char a1, vector signed char a2)
+ {
+   return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vsububm (vector signed char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vsububm (vector unsigned char a1, vector signed char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
+ inline vector unsigned char
+ vec_vsububm (vector unsigned char a1, vector unsigned char a2)
+ {
+   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+ }
+ 
  /* vec_subc */
  
  inline vector unsigned int
*************** vec_subs (vector signed int a1, vector s
*** 2919,2944 ****
    return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) 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_sum2s */
  
  inline vector signed int
--- 4141,4288 ----
    return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
  }
  
! /* vec_vsubsws */
  
! inline vector signed int
! vec_vsubsws (vector signed int a1, vector signed int a2)
  {
!   return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
  }
  
! /* vec_vsubuws */
! 
! inline vector unsigned int
! vec_vsubuws (vector signed int a1, vector unsigned int a2)
  {
!   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
  }
  
! inline vector unsigned int
! vec_vsubuws (vector unsigned int a1, vector signed int a2)
! {
!   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
! }
! 
! inline vector unsigned int
! vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
! {
!   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
! }
! 
! /* vec_vsubshs */
! 
! inline vector signed short
! vec_vsubshs (vector signed short a1, vector signed short a2)
! {
!   return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
! }
! 
! /* vec_vsubuhs */
! 
! inline vector unsigned short
! vec_vsubuhs (vector signed short a1, vector unsigned short a2)
! {
!   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
! }
! 
! inline vector unsigned short
! vec_vsubuhs (vector unsigned short a1, vector signed short a2)
! {
!   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
! }
! 
! /* vec_vsubuhs */
! 
! inline vector unsigned short
! vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
! {
!   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
! }
! 
! inline vector unsigned short
! vec_vsubsuhs (vector unsigned short a1, vector signed short a2)
! {
!   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
! }
! 
! inline vector unsigned short
! vec_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
! {
!   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
! }
! 
! /* vec_vsubsbs */
! 
! inline vector signed char
! vec_vsubsbs (vector signed char a1, vector signed char a2)
! {
!   return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
! }
! 
! /* vec_vsububs */
! 
! inline vector unsigned char
! vec_vsubsubs (vector signed char a1, vector unsigned char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
! }
! 
! inline vector unsigned char
! vec_vsubsubs (vector unsigned char a1, vector signed char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
! }
! 
! inline vector unsigned char
! vec_vsubsubs (vector unsigned char a1, vector unsigned char a2)
! {
!   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
! }
! 
! /* vec_sum4s */
! 
! inline vector unsigned int
! vec_sum4s (vector unsigned char a1, vector unsigned int a2)
! {
!   return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
! }
! 
! inline vector signed int
! vec_sum4s (vector signed char a1, vector signed int a2)
! {
!   return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
! }
! 
! inline vector signed int
! vec_sum4s (vector signed short a1, vector signed int a2)
  {
    return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
  }
  
+ /* vec_vsum4shs */
+ 
+ inline vector signed int
+ vec_vsum4shss (vector signed short a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vsum4sbs */
+ 
+ inline vector signed int
+ vec_vsum4sbs (vector signed char a1, vector signed int a2)
+ {
+   return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
+ }
+ 
+ /* vec_vsum4ubs */
+ 
+ inline vector unsigned int
+ vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
+ {
+   return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
+ }
+ 
  /* vec_sum2s */
  
  inline vector signed int
*************** vec_unpackh (vector signed short a1)
*** 2977,2982 ****
--- 4321,4350 ----
    return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
  }
  
+ /* vec_vupkhsh */
+ 
+ inline vector signed int
+ vec_vupkhsh (vector signed short a1)
+ {
+   return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
+ }
+ 
+ /* vec_vupkhpx */
+ 
+ inline vector unsigned int
+ vec_vupkhpx (vector signed short a1)
+ {
+   return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
+ }
+ 
+ /* vec_vupkhsb */
+ 
+ inline vector signed short
+ vec_vupkhsb (vector signed char a1)
+ {
+   return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
+ }
+ 
  /* vec_unpackl */
  
  inline vector signed short
*************** vec_unpackl (vector signed char a1)
*** 2985,2996 ****
--- 4353,4386 ----
    return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
  }
  
+ inline vector unsigned int
+ vec_vupklpx (vector signed short a1)
+ {
+   return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
+ }
+ 
  inline vector signed int
  vec_unpackl (vector signed short a1)
  {
    return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
  }
  
+ /* vec_upklsh */
+ 
+ inline vector signed int
+ vec_vupklsh (vector signed short a1)
+ {
+   return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
+ }
+ 
+ /* vec_vupklsb */
+ 
+ inline vector signed short
+ vec_vupklsb (vector signed char a1)
+ {
+   return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
+ }
+ 
  /* vec_xor */
  
  inline vector float
*************** struct __vec_step_help<vector float>
*** 4242,4247 ****
--- 5632,5675 ----
    __ch (__builtin_types_compatible_p (t, vector float), 4,		\
    __altivec_link_error_invalid_argument ())))))))
  
+ #define vec_vaddubm(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ()))))
+ 
+ #define vec_vadduhm(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ()))))
+ 
+ #define vec_vadduwm(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ()))))
+ 
+ #define vec_vaddfp(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
  #define vec_add(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
        ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
*************** __ch (__bin_args_eq (vector unsigned int
*** 4276,4290 ****
        ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ())
  
- #define vec_vaddcuw(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))), \
- __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
-       ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
- __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
-       ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int ) (a1), (vector signed int ) (a2))), \
-     __altivec_link_error_invalid_argument ())))
- 
  #define vec_adds(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
        ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
--- 5704,5709 ----
*************** __ch (__bin_args_eq (vector signed int, 
*** 4312,4317 ****
--- 5731,5778 ----
        ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))))))))
  
+ #define vec_vaddsws(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vadduws(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vaddshs(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vadduhs(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vaddsbs(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vaddubs(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ())))
+ 
  #define vec_and(a1, a2) \
  __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
        ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
*************** __ch (__bin_args_eq (vector signed int, 
*** 4407,4412 ****
--- 5868,5903 ----
        ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))
  
+ #define vec_vavgsw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vavguw(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vavgsh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vavguh(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vavgsb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vavgub(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
  #define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
  
  #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
*************** __ch (__bin_args_eq (vector float, (a1),
*** 4428,4434 ****
        ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
      __altivec_link_error_invalid_argument ())))))))
  
! #define vec_cmpge(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
  
  #define vec_cmpgt(a1, a2) \
  __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
--- 5919,5951 ----
        ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
      __altivec_link_error_invalid_argument ())))))))
  
! #define vec_vcmpeqfp(a1, a2) \
! __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
!       ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
!   __altivec_link_error_invalid_argument ())
! 
! #define vec_vcmpequw(a1, a2) \
! __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
!       ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
! __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
!       ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
!   __altivec_link_error_invalid_argument ()))
! 
! #define vec_vcmpequh(a1, a2) \
! __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
!       ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
! __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
!       ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
!   __altivec_link_error_invalid_argument ()))
! 
! #define vec_vcmpequb(a1, a2) \
! __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
!       ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
! __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
!       ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
!   __altivec_link_error_invalid_argument ()))
! 
! #define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
  
  #define vec_cmpgt(a1, a2) \
  __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
*************** __ch (__bin_args_eq (vector float, (a1),
*** 4447,4452 ****
--- 5964,6004 ----
        ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
      __altivec_link_error_invalid_argument ())))))))
  
+ #define vec_vcmpgtfp(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vcmpgtsw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vcmpgtuw(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vcmpgtsh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vcmpgtuh(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vcmpgtsb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vcmpgtub(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
+   __altivec_link_error_invalid_argument ())
+ 
  #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
  
  #define vec_cmplt(a1, a2) \
*************** __ch (__bin_args_eq (vector signed int, 
*** 4473,4479 ****
        ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
      __altivec_link_error_invalid_argument ()))
  
! #define vec_vcfux(a1, a2) __builtin_altivec_vcfux ((vector signed int)(a1), (a2))
  
  #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
  
--- 6025,6039 ----
        ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
      __altivec_link_error_invalid_argument ()))
  
! #define vec_vcfsx(a1, a2) \
! __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
!       ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
!   __altivec_link_error_invalid_argument ())
! 
! #define vec_vcfux(a1, a2) \
! __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
!       ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
!   __altivec_link_error_invalid_argument ())
  
  #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
  
*************** __ch (__bin_args_eq (vector signed int, 
*** 4493,4503 ****
  
  #define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
  
- #define vec_vexptefp(a1) \
- __ch (__un_args_eq (vector float, (a1)), \
-     ((vector float) __builtin_altivec_vexptefp ((a1))), \
-     __altivec_link_error_invalid_argument ())
- 
  #define vec_floor(a1) __builtin_altivec_vrfim (a1)
  
  #define vec_ld(a, b) \
--- 6053,6058 ----
*************** __ch (__un_args_eq (signed int *, (b)), 
*** 4584,4590 ****
        ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
  __ch (__un_args_eq (signed int [], (b)), \
        ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
! __altivec_link_error_invalid_argument ()))))))))))))
  
  #define vec_ldl(a, b) \
  __ch (__un_args_eq (vector unsigned char *, (b)), \
--- 6139,6186 ----
        ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
  __ch (__un_args_eq (signed int [], (b)), \
        ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
! __ch (__un_args_eq (float *, (b)), \
!       ((vector float) __builtin_altivec_lvewx ((a), (b))), \
! __ch (__un_args_eq (float [], (b)), \
!       ((vector float) __builtin_altivec_lvewx ((a), (b))), \
! __altivec_link_error_invalid_argument ()))))))))))))))
! 
! #define vec_lvewx(a, b) \
! __ch (__un_args_eq (unsigned int *, (b)), \
!       ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
! __ch (__un_args_eq (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 (signed int [], (b)), \
!       ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
! __ch (__un_args_eq (float *, (b)), \
!       ((vector float) __builtin_altivec_lvewx ((a), (b))), \
! __ch (__un_args_eq (float [], (b)), \
!       ((vector float) __builtin_altivec_lvewx ((a), (b))), \
! __altivec_link_error_invalid_argument ()))))))
! 
! #define vec_lvehx(a, b) \
! __ch (__un_args_eq (unsigned short *, (b)), \
!       ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
! __ch (__un_args_eq (unsigned short [], (b)), \
!       ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
! __ch (__un_args_eq (signed short *, (b)), \
!       ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
! __ch (__un_args_eq (signed short [], (b)), \
!       ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
! __altivec_link_error_invalid_argument ()))))
! 
! #define vec_lvebx(a, b) \
! __ch (__un_args_eq (unsigned char *, (b)), \
!       ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
! __ch (__un_args_eq (unsigned char [], (b)), \
!       ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
! __ch (__un_args_eq (signed char *, (b)), \
!       ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
! __ch (__un_args_eq (signed char [], (b)), \
!       ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
! __altivec_link_error_invalid_argument ()))))
  
  #define vec_ldl(a, b) \
  __ch (__un_args_eq (vector unsigned char *, (b)), \
*************** __altivec_link_error_invalid_argument ()
*** 4653,4660 ****
  
  #define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
  
- #define vec_vmaddfp(a1, a2, a3) ((vector float)(__builtin_altivec_vmaddfp ((a1), (a2), (a3))))
- 
  #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
  
  #define vec_max(a1, a2) \
--- 6249,6254 ----
*************** __ch (__bin_args_eq (vector float, (a1),
*** 4686,4691 ****
--- 6280,6332 ----
        ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
      __altivec_link_error_invalid_argument ())))))))))))))
  
+ #define vec_vmaxfp(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmaxsw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmaxuw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vmaxsh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmaxuh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vmaxsb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmaxub(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
  #define vec_mergeh(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
        ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
*************** __ch (__bin_args_eq (vector unsigned int
*** 4703,4708 ****
--- 6344,6372 ----
        ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ())))))))
  
+ #define vec_vmrghw(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vmrghh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vmrghb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_mergel(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
        ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
*************** __ch (__bin_args_eq (vector unsigned int
*** 4720,4725 ****
--- 6384,6412 ----
        ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ())))))))
  
+ #define vec_vmrglw(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vmrglh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vmrglb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_mfvscr()  (((vector unsigned short) __builtin_altivec_mfvscr ()))
  
  #define vec_min(a1, a2) \
*************** __ch (__bin_args_eq (vector float, (a1),
*** 4751,4756 ****
--- 6438,6490 ----
        ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
      __altivec_link_error_invalid_argument ())))))))))))))
  
+ #define vec_vminfp(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vminsw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vminuw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vminsh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vminuh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vminsb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vminub(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
  #define vec_mladd(a1, a2, a3) \
  __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
        ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
*************** __ch (__tern_args_eq (vector signed shor
*** 4775,4780 ****
--- 6509,6534 ----
        ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
      __altivec_link_error_invalid_argument ()))))
  
+ #define vec_vmsumshm(a1, a2, a3) \
+ __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
+       ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmsumuhm(a1, a2, a3) \
+ __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
+       ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmsummbm(a1, a2, a3) \
+ __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
+       ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_msumubm(a1, a2, a3) \
+ __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
+       ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_msums(a1, a2, a3) \
  __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
        ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
*************** __ch (__tern_args_eq (vector signed shor
*** 4782,4787 ****
--- 6536,6551 ----
        ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
      __altivec_link_error_invalid_argument ()))
  
+ #define vec_vmsumshs(a1, a2, a3) \
+ __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
+       ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmsumuhs(a1, a2, a3) \
+ __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
+       ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_mtvscr(a1) \
  __ch (__un_args_eq (vector signed int, (a1)), \
        __builtin_altivec_mtvscr ((vector signed int) (a1)), \
*************** __ch (__bin_args_eq (vector signed short
*** 4808,4813 ****
--- 6572,6597 ----
        ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
      __altivec_link_error_invalid_argument ()))))
  
+ #define vec_vmulesh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmuleuh(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmulesb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmuleub(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_mulo(a1, a2) \
  __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
        ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
*************** __ch (__bin_args_eq (vector signed short
*** 4819,4824 ****
--- 6603,6628 ----
        ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
      __altivec_link_error_invalid_argument ()))))
  
+ #define vec_vmulosh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmulouh(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_mulosb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vmuloub(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_nmsub(a1, a2, a3) \
  __ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
        ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
*************** __ch (__bin_args_eq (vector unsigned int
*** 4885,4890 ****
--- 6689,6708 ----
        ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))
  
+ #define vec_vpkuwum(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vpkuhum(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_packpx(a1, a2) __builtin_altivec_vpkpx ((a1), (a2))
  
  #define vec_packs(a1, a2) \
*************** __ch (__bin_args_eq (vector signed int, 
*** 4898,4903 ****
--- 6716,6741 ----
        ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))
  
+ #define vec_vpkswss(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vpkuwus(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vpkshss(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vpkuhus(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_packsu(a1, a2) \
  __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
        ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
*************** __ch (__bin_args_eq (vector signed int, 
*** 4909,4914 ****
--- 6747,6762 ----
        ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))
  
+ #define vec_vpkswus(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vpkshus(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_perm(a1, a2, a3) \
  __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
        ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
*************** __ch (__tern_args_eq (vector unsigned ch
*** 4926,4940 ****
        ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
      __altivec_link_error_invalid_argument ())))))))
  
- #define vec_vperm(a1, a2, a3) \
- __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
-       ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
-     __altivec_link_error_invalid_argument ())
- 
  #define vec_re(a1) __builtin_altivec_vrefp ((a1))
  
- #define vec_vrefp(a1) __builtin_altivec_vrefp ((a1))
- 
  #define vec_rl(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
        ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
--- 6774,6781 ----
*************** __ch (__bin_args_eq (vector unsigned int
*** 4950,4955 ****
--- 6791,6817 ----
        ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))
  
+ #define vec_vrlw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vrlh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vrlb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_round(a1) __builtin_altivec_vrfin ((a1))
  
  #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
*************** __ch (__bin_args_eq (vector unsigned int
*** 5000,5006 ****
        ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))
  
! #define vec_vsldoi(a1,a2,a3)   ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3)))
  
  #define vec_sld(a1, a2, a3) \
  __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
--- 6862,6887 ----
        ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))
  
! #define vec_vslw(a1, a2) \
! __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
!       ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
! __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
!       ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
! __altivec_link_error_invalid_argument ()))
! 
! #define vec_vslh(a1, a2) \
! __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
!       ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
! __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
!       ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
! __altivec_link_error_invalid_argument ()))
! 
! #define vec_vslb(a1, a2) \
! __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
!       ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
! __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
!       ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
! __altivec_link_error_invalid_argument ()))
  
  #define vec_sld(a1, a2, a3) \
  __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
*************** __ch (__bin_args_eq (vector unsigned int
*** 5106,5111 ****
--- 6987,7015 ----
        ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
      __altivec_link_error_invalid_argument ())))))))
  
+ #define vec_vspltw(a1, a2) \
+ __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
+       ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
+       ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
+       ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vsplth(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
+       ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
+       ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vspltb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
+       ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
+       ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
  
  #define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
*************** __ch (__bin_args_eq (vector unsigned int
*** 5133,5138 ****
--- 7037,7063 ----
        ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))
  
+ #define vec_vsrw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vsrh(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vsrb(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_sra(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
        ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
*************** __ch (__bin_args_eq (vector unsigned int
*** 5148,5153 ****
--- 7073,7099 ----
        ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))
  
+ #define vec_vsraw(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vsrah(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_vsrab(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_srl(a1, a2) \
  __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
        ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
*************** __ch (__un_args_eq (vector float, (a)), 
*** 5241,5246 ****
--- 7187,7215 ----
       __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
       __altivec_link_error_invalid_argument ())))))))
  
+ #define vec_stvewx(a, b, c) \
+ __ch (__un_args_eq (vector unsigned int, (a)), \
+      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
+ __ch (__un_args_eq (vector signed int, (a)), \
+      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
+ __ch (__un_args_eq (vector float, (a)), \
+      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_stvehx(a, b, c) \
+ __ch (__un_args_eq (vector unsigned short, (a)), \
+      __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
+ __ch (__un_args_eq (vector signed short, (a)), \
+      __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
+ __altivec_link_error_invalid_argument ()))
+ 
+ #define vec_stvebx(a, b, c) \
+ __ch (__un_args_eq (vector unsigned char, (a)), \
+       __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
+ __ch (__un_args_eq (vector signed char, (a)), \
+       __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
+ __altivec_link_error_invalid_argument ()))
+ 
  #define vec_sub(a1, a2) \
  __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
        ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
*************** __ch (__bin_args_eq (vector float, (a1),
*** 5270,5275 ****
--- 7239,7282 ----
        ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
      __altivec_link_error_invalid_argument ())))))))))))))
  
+ #define vec_vsubfp(a1, a2) \
+ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+       ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vsubuwm(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))))
+ 
+ #define vec_vsubuhm(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))))
+ 
+ #define vec_vsububm(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))))
+ 
  #define vec_subc(a1, a2) ((vector unsigned int) __builtin_altivec_vsubcuw ((vector unsigned int) (a1), (vector unsigned int) (a2)))
  
  #define vec_subs(a1, a2) \
*************** __ch (__bin_args_eq (vector signed int, 
*** 5299,5304 ****
--- 7306,7353 ----
        ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ()))))))))))))
  
+ #define vec_vsubsws(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vsubuws(a1, a2) \
+ __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vsubshs(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+       ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vsubuhs(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vsubsbs(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+       ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vsububs(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+ 
  #define vec_sum4s(a1, a2) \
  __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
        ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
*************** __ch (__bin_args_eq (vector signed short
*** 5308,5313 ****
--- 7357,7377 ----
        ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
      __altivec_link_error_invalid_argument ())))
  
+ #define vec_vsum4shs(a1, a2) \
+ __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vsum4sbs(a1, a2) \
+ __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
+       ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vsum4ubs(a1, a2) \
+ __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
+       ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
  
  #define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
*************** __ch (__un_args_eq (vector signed short,
*** 5323,5328 ****
--- 7387,7407 ----
        ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
      __altivec_link_error_invalid_argument ())))
  
+ #define vec_vupkhsh(a1) \
+ __ch (__un_args_eq (vector signed short, (a1)), \
+       ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vupkhpx(a1) \
+ __ch (__un_args_eq (vector signed short, (a1)), \
+       ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vupkhsb(a1) \
+ __ch (__un_args_eq (vector signed char, (a1)), \
+       ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
+ __altivec_link_error_invalid_argument ())
+ 
  #define vec_unpackl(a1) \
  __ch (__un_args_eq (vector signed char, (a1)), \
        ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
*************** __ch (__un_args_eq (vector signed short,
*** 5331,5336 ****
--- 7410,7430 ----
  __ch (__un_args_eq (vector signed short, (a1)), \
        ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
      __altivec_link_error_invalid_argument ())))
+ 
+ #define vec_vupklsh(a1) \
+ __ch (__un_args_eq (vector signed short, (a1)), \
+       ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vupklpx(a1) \
+ __ch (__un_args_eq (vector signed short, (a1)), \
+       ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
+ __altivec_link_error_invalid_argument ())
+ 
+ #define vec_vupklsb(a1) \
+ __ch (__un_args_eq (vector signed char, (a1)), \
+       ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
+ __altivec_link_error_invalid_argument ())
  
  #define vec_xor(a1, a2) \
  __ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]