altivec.h revision 96263
190075Sobrien/* PowerPC AltiVec include file. 290075Sobrien Copyright (C) 2002 Free Software Foundation, Inc. 390075Sobrien Contributed by Aldy Hernandez (aldyh@redhat.com). 490075Sobrien 590075SobrienThis file is part of GNU CC. 690075Sobrien 790075SobrienGNU CC is free software; you can redistribute it and/or modify 890075Sobrienit under the terms of the GNU General Public License as published by 990075Sobrienthe Free Software Foundation; either version 2, or (at your option) 1090075Sobrienany later version. 1190075Sobrien 1290075SobrienGNU CC is distributed in the hope that it will be useful, 1390075Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of 1490075SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1590075SobrienGNU General Public License for more details. 1690075Sobrien 1790075SobrienYou should have received a copy of the GNU General Public License 1890075Sobrienalong with GNU CC; see the file COPYING. If not, write to 1990075Sobrienthe Free Software Foundation, 59 Temple Place - Suite 330, 2090075SobrienBoston, MA 02111-1307, USA. */ 2190075Sobrien 2290075Sobrien/* As a special exception, if you include this header file into source 2390075Sobrien files compiled by GCC, this header file does not by itself cause 2490075Sobrien the resulting executable to be covered by the GNU General Public 2590075Sobrien License. This exception does not however invalidate any other 2690075Sobrien reasons why the executable file might be covered by the GNU General 2790075Sobrien Public License. */ 2890075Sobrien 2990075Sobrien/* Implemented to conform to the specification included in the AltiVec 3090075Sobrien Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */ 3190075Sobrien 3290075Sobrien#ifndef _ALTIVEC_H 3390075Sobrien#define _ALTIVEC_H 1 3490075Sobrien 3590075Sobrien/* Required by Motorola specs. */ 3690075Sobrien#define __VEC__ 10206 3790075Sobrien 3896263Sobrien#ifndef __ALTIVEC__ 3990075Sobrien#define __ALTIVEC__ 1 4096263Sobrien#endif 4190075Sobrien 4290075Sobrien#define __vector __attribute__((vector_size(16))) 4390075Sobrien 4490075Sobrien/* You are allowed to undef this for C++ compatability. */ 4590075Sobrien#define vector __vector 4690075Sobrien 4796263Sobrien#define bool signed 4896263Sobrien#define pixel short 4996263Sobrien#define __pixel short 5096263Sobrien 5196263Sobrien/* Dummy prototype. */ 5296263Sobrienextern int __altivec_link_error_invalid_argument (); 5396263Sobrien 5490075Sobrien/* Helper macros. */ 5590075Sobrien 5696263Sobrien#define __CR6_EQ 0 5796263Sobrien#define __CR6_EQ_REV 1 5896263Sobrien#define __CR6_LT 2 5996263Sobrien#define __CR6_LT_REV 3 6096263Sobrien 6190075Sobrien#define __bin_args_eq(xtype, x, ytype, y) \ 6290075Sobrien (__builtin_types_compatible_p (xtype, typeof (x)) \ 6390075Sobrien && __builtin_types_compatible_p (ytype, typeof (y))) 6490075Sobrien 6590075Sobrien#define __un_args_eq(xtype, x) \ 6690075Sobrien __builtin_types_compatible_p (xtype, typeof (x)) 6790075Sobrien 6890075Sobrien#define __tern_args_eq(xtype, x, ytype, y, ztype, z) \ 6990075Sobrien (__builtin_types_compatible_p (xtype, typeof (x)) \ 7090075Sobrien && __builtin_types_compatible_p (ytype, typeof (y)) \ 7190075Sobrien && __builtin_types_compatible_p (ztype, typeof (z))) 7290075Sobrien 7390075Sobrien#define __ch(x, y, z) __builtin_choose_expr (x, y, z) 7490075Sobrien 7596263Sobrien/* These are easy... Same exact arguments. */ 7696263Sobrien 7796263Sobrien#define vec_vaddcuw vec_addc 7896263Sobrien#define vec_vand vec_and 7996263Sobrien#define vec_vandc vec_andc 8096263Sobrien#define vec_vrfip vec_ceil 8196263Sobrien#define vec_vcmpbfp vec_cmpb 8296263Sobrien#define vec_vcmpgefp vec_cmpge 8396263Sobrien#define vec_vctsxs vec_cts 8496263Sobrien#define vec_vctuxs vec_ctu 8596263Sobrien#define vec_vexptefp vec_expte 8696263Sobrien#define vec_vrfim vec_floor 8796263Sobrien#define vec_lvx vec_ld 8896263Sobrien#define vec_lvxl vec_ldl 8996263Sobrien#define vec_vlogefp vec_loge 9096263Sobrien#define vec_vmaddfp vec_madd 9196263Sobrien#define vec_vmhaddshs vec_madds 9296263Sobrien#define vec_vmladduhm vec_mladd 9396263Sobrien#define vec_vmhraddshs vec_mradds 9496263Sobrien#define vec_vnmsubfp vec_nmsub 9596263Sobrien#define vec_vnor vec_nor 9696263Sobrien#define vec_vor vec_or 9796263Sobrien#define vec_vpkpx vec_packpx 9896263Sobrien#define vec_vperm vec_perm 9996263Sobrien#define vec_vrefp vec_re 10096263Sobrien#define vec_vrfin vec_round 10196263Sobrien#define vec_vrsqrtefp vec_rsqrte 10296263Sobrien#define vec_vsel vec_sel 10396263Sobrien#define vec_vsldoi vec_sld 10496263Sobrien#define vec_vsl vec_sll 10596263Sobrien#define vec_vslo vec_slo 10696263Sobrien#define vec_vspltisb vec_splat_s8 10796263Sobrien#define vec_vspltish vec_splat_s16 10896263Sobrien#define vec_vspltisw vec_splat_s32 10996263Sobrien#define vec_vsr vec_srl 11096263Sobrien#define vec_vsro vec_sro 11196263Sobrien#define vec_stvx vec_st 11296263Sobrien#define vec_stvxl vec_stl 11396263Sobrien#define vec_vsubcuw vec_subc 11496263Sobrien#define vec_vsum2sws vec_sum2s 11596263Sobrien#define vec_vsumsws vec_sums 11696263Sobrien#define vec_vrfiz vec_trunc 11796263Sobrien#define vec_vxor vec_xor 11896263Sobrien 11990075Sobrien#ifdef __cplusplus 12090075Sobrien 12196263Sobrien/* Prototypes for builtins that take literals and must always be 12296263Sobrien inlined. */ 12396263Sobrieninline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline)); 12496263Sobrieninline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline)); 12596263Sobrieninline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline)); 12696263Sobrieninline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline)); 12796263Sobrieninline void vec_dss (const char) __attribute__ ((always_inline)); 12896263Sobrieninline void vec_dst (void *, int, const char) __attribute__ ((always_inline)); 12996263Sobrieninline void vec_dstst (void *, int, const char) __attribute__ ((always_inline)); 13096263Sobrieninline void vec_dststt (void *, int, const char) __attribute__ ((always_inline)); 13196263Sobrieninline void vec_dstt (void *, int, const char) __attribute__ ((always_inline)); 13296263Sobrieninline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline)); 13396263Sobrieninline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline)); 13496263Sobrieninline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline)); 13596263Sobrieninline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline)); 13696263Sobrieninline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline)); 13796263Sobrieninline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline)); 13896263Sobrieninline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline)); 13996263Sobrieninline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline)); 14096263Sobrieninline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline)); 14196263Sobrieninline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline)); 14296263Sobrieninline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline)); 14396263Sobrieninline vector float vec_splat (vector float, const char) __attribute__ ((always_inline)); 14496263Sobrieninline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline)); 14596263Sobrieninline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline)); 14696263Sobrieninline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline)); 14796263Sobrieninline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline)); 14896263Sobrieninline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline)); 14996263Sobrieninline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline)); 15096263Sobrieninline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline)); 15196263Sobrieninline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline)); 15290075Sobrien 15396263Sobrien/* vec_abs */ 15496263Sobrien 15596263Sobrieninline vector signed char 15696263Sobrienvec_abs (vector signed char a1) 15796263Sobrien{ 15896263Sobrien return __builtin_altivec_abs_v16qi (a1); 15996263Sobrien} 16096263Sobrien 16196263Sobrieninline vector signed short 16296263Sobrienvec_abs (vector signed short a1) 16396263Sobrien{ 16496263Sobrien return __builtin_altivec_abs_v8hi (a1); 16596263Sobrien} 16696263Sobrien 16796263Sobrieninline vector signed int 16896263Sobrienvec_abs (vector signed int a1) 16996263Sobrien{ 17096263Sobrien return __builtin_altivec_abs_v4si (a1); 17196263Sobrien} 17296263Sobrien 17396263Sobrieninline vector float 17496263Sobrienvec_abs (vector float a1) 17596263Sobrien{ 17696263Sobrien return __builtin_altivec_abs_v4sf (a1); 17796263Sobrien} 17896263Sobrien 17996263Sobrien/* vec_abss */ 18096263Sobrien 18196263Sobrieninline vector signed char 18296263Sobrienvec_abss (vector signed char a1) 18396263Sobrien{ 18496263Sobrien return __builtin_altivec_abss_v16qi (a1); 18596263Sobrien} 18696263Sobrien 18796263Sobrieninline vector signed short 18896263Sobrienvec_abss (vector signed short a1) 18996263Sobrien{ 19096263Sobrien return __builtin_altivec_abss_v8hi (a1); 19196263Sobrien} 19296263Sobrien 19396263Sobrieninline vector signed int 19496263Sobrienvec_abss (vector signed int a1) 19596263Sobrien{ 19696263Sobrien return __builtin_altivec_abss_v4si (a1); 19796263Sobrien} 19896263Sobrien 19996263Sobrien/* vec_add */ 20096263Sobrien 20196263Sobrieninline vector signed char 20296263Sobrienvec_add (vector signed char a1, vector signed char a2) 20396263Sobrien{ 20496263Sobrien return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 20596263Sobrien} 20696263Sobrien 20796263Sobrieninline vector unsigned char 20896263Sobrienvec_add (vector signed char a1, vector unsigned char a2) 20996263Sobrien{ 21096263Sobrien return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 21196263Sobrien} 21296263Sobrien 21396263Sobrieninline vector unsigned char 21496263Sobrienvec_add (vector unsigned char a1, vector signed char a2) 21596263Sobrien{ 21696263Sobrien return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 21796263Sobrien} 21896263Sobrien 21996263Sobrieninline vector unsigned char 22096263Sobrienvec_add (vector unsigned char a1, vector unsigned char a2) 22196263Sobrien{ 22296263Sobrien return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 22396263Sobrien} 22496263Sobrien 22596263Sobrieninline vector signed short 22696263Sobrienvec_add (vector signed short a1, vector signed short a2) 22796263Sobrien{ 22896263Sobrien return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 22996263Sobrien} 23096263Sobrien 23196263Sobrieninline vector unsigned short 23296263Sobrienvec_add (vector signed short a1, vector unsigned short a2) 23396263Sobrien{ 23496263Sobrien return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 23596263Sobrien} 23696263Sobrien 23796263Sobrieninline vector unsigned short 23896263Sobrienvec_add (vector unsigned short a1, vector signed short a2) 23996263Sobrien{ 24096263Sobrien return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 24196263Sobrien} 24296263Sobrien 24396263Sobrieninline vector unsigned short 24496263Sobrienvec_add (vector unsigned short a1, vector unsigned short a2) 24596263Sobrien{ 24696263Sobrien return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 24796263Sobrien} 24896263Sobrien 24996263Sobrieninline vector signed int 25096263Sobrienvec_add (vector signed int a1, vector signed int a2) 25196263Sobrien{ 25296263Sobrien return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 25396263Sobrien} 25496263Sobrien 25596263Sobrieninline vector unsigned int 25696263Sobrienvec_add (vector signed int a1, vector unsigned int a2) 25796263Sobrien{ 25896263Sobrien return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 25996263Sobrien} 26096263Sobrien 26196263Sobrieninline vector unsigned int 26296263Sobrienvec_add (vector unsigned int a1, vector signed int a2) 26396263Sobrien{ 26496263Sobrien return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 26596263Sobrien} 26696263Sobrien 26796263Sobrieninline vector unsigned int 26896263Sobrienvec_add (vector unsigned int a1, vector unsigned int a2) 26996263Sobrien{ 27096263Sobrien return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 27196263Sobrien} 27296263Sobrien 27396263Sobrieninline vector float 27496263Sobrienvec_add (vector float a1, vector float a2) 27596263Sobrien{ 27696263Sobrien return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2); 27796263Sobrien} 27896263Sobrien 27996263Sobrien/* vec_vaddfp */ 28096263Sobrien 28196263Sobrieninline vector float 28296263Sobrienvec_vaddfp (vector float a1, vector float a2) 28396263Sobrien{ 28496263Sobrien return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2); 28596263Sobrien} 28696263Sobrien 28796263Sobrien/* vec_vadduwm */ 28896263Sobrien 28996263Sobrieninline vector signed int 29096263Sobrienvec_vadduwm (vector signed int a1, vector signed int a2) 29196263Sobrien{ 29296263Sobrien return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 29396263Sobrien} 29496263Sobrien 29596263Sobrieninline vector unsigned int 29696263Sobrienvec_vadduwm (vector signed int a1, vector unsigned int a2) 29796263Sobrien{ 29896263Sobrien return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 29996263Sobrien} 30096263Sobrien 30196263Sobrieninline vector unsigned int 30296263Sobrienvec_vadduwm (vector unsigned int a1, vector signed int a2) 30396263Sobrien{ 30496263Sobrien return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 30596263Sobrien} 30696263Sobrien 30796263Sobrieninline vector unsigned int 30896263Sobrienvec_vadduwm (vector unsigned int a1, vector unsigned int a2) 30996263Sobrien{ 31096263Sobrien return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); 31196263Sobrien} 31296263Sobrien 31396263Sobrien/* vec_vadduhm */ 31496263Sobrien 31596263Sobrieninline vector signed short 31696263Sobrienvec_vadduhm (vector signed short a1, vector signed short a2) 31796263Sobrien{ 31896263Sobrien return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 31996263Sobrien} 32096263Sobrien 32196263Sobrieninline vector unsigned short 32296263Sobrienvec_vadduhm (vector signed short a1, vector unsigned short a2) 32396263Sobrien{ 32496263Sobrien return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 32596263Sobrien} 32696263Sobrien 32796263Sobrieninline vector unsigned short 32896263Sobrienvec_vadduhm (vector unsigned short a1, vector signed short a2) 32996263Sobrien{ 33096263Sobrien return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 33196263Sobrien} 33296263Sobrien 33396263Sobrieninline vector unsigned short 33496263Sobrienvec_vadduhm (vector unsigned short a1, vector unsigned short a2) 33596263Sobrien{ 33696263Sobrien return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); 33796263Sobrien} 33896263Sobrien 33996263Sobrien/* vec_vaddubm */ 34096263Sobrien 34196263Sobrieninline vector signed char 34296263Sobrienvec_vaddubm (vector signed char a1, vector signed char a2) 34396263Sobrien{ 34496263Sobrien return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 34596263Sobrien} 34696263Sobrien 34796263Sobrieninline vector unsigned char 34896263Sobrienvec_vaddubm (vector signed char a1, vector unsigned char a2) 34996263Sobrien{ 35096263Sobrien return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 35196263Sobrien} 35296263Sobrien 35396263Sobrieninline vector unsigned char 35496263Sobrienvec_vaddubm (vector unsigned char a1, vector signed char a2) 35596263Sobrien{ 35696263Sobrien return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 35796263Sobrien} 35896263Sobrien 35996263Sobrieninline vector unsigned char 36096263Sobrienvec_vaddubm (vector unsigned char a1, vector unsigned char a2) 36196263Sobrien{ 36296263Sobrien return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); 36396263Sobrien} 36496263Sobrien 36596263Sobrien/* vec_addc */ 36696263Sobrien 36796263Sobrieninline vector unsigned int 36896263Sobrienvec_addc (vector unsigned int a1, vector unsigned int a2) 36996263Sobrien{ 37096263Sobrien return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2); 37196263Sobrien} 37296263Sobrien 37396263Sobrien/* vec_adds */ 37496263Sobrien 37596263Sobrieninline vector unsigned char 37696263Sobrienvec_adds (vector signed char a1, vector unsigned char a2) 37796263Sobrien{ 37896263Sobrien return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 37996263Sobrien} 38096263Sobrien 38196263Sobrieninline vector unsigned char 38296263Sobrienvec_adds (vector unsigned char a1, vector signed char a2) 38396263Sobrien{ 38496263Sobrien return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 38596263Sobrien} 38696263Sobrien 38796263Sobrieninline vector unsigned char 38896263Sobrienvec_adds (vector unsigned char a1, vector unsigned char a2) 38996263Sobrien{ 39096263Sobrien return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 39196263Sobrien} 39296263Sobrien 39396263Sobrieninline vector signed char 39496263Sobrienvec_adds (vector signed char a1, vector signed char a2) 39596263Sobrien{ 39696263Sobrien return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); 39796263Sobrien} 39896263Sobrien 39996263Sobrieninline vector unsigned short 40096263Sobrienvec_adds (vector signed short a1, vector unsigned short a2) 40196263Sobrien{ 40296263Sobrien return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 40396263Sobrien} 40496263Sobrien 40596263Sobrieninline vector unsigned short 40696263Sobrienvec_adds (vector unsigned short a1, vector signed short a2) 40796263Sobrien{ 40896263Sobrien return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 40996263Sobrien} 41096263Sobrien 41196263Sobrieninline vector unsigned short 41296263Sobrienvec_adds (vector unsigned short a1, vector unsigned short a2) 41396263Sobrien{ 41496263Sobrien return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 41596263Sobrien} 41696263Sobrien 41796263Sobrieninline vector signed short 41896263Sobrienvec_adds (vector signed short a1, vector signed short a2) 41996263Sobrien{ 42096263Sobrien return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); 42196263Sobrien} 42296263Sobrien 42396263Sobrieninline vector unsigned int 42496263Sobrienvec_adds (vector signed int a1, vector unsigned int a2) 42596263Sobrien{ 42696263Sobrien return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 42796263Sobrien} 42896263Sobrien 42996263Sobrieninline vector unsigned int 43096263Sobrienvec_adds (vector unsigned int a1, vector signed int a2) 43196263Sobrien{ 43296263Sobrien return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 43396263Sobrien} 43496263Sobrien 43596263Sobrieninline vector unsigned int 43696263Sobrienvec_adds (vector unsigned int a1, vector unsigned int a2) 43796263Sobrien{ 43896263Sobrien return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 43996263Sobrien} 44096263Sobrien 44196263Sobrieninline vector signed int 44296263Sobrienvec_adds (vector signed int a1, vector signed int a2) 44396263Sobrien{ 44496263Sobrien return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); 44596263Sobrien} 44696263Sobrien 44796263Sobrien/* vec_vaddsws */ 44896263Sobrien 44996263Sobrieninline vector signed int 45096263Sobrienvec_vaddsws (vector signed int a1, vector signed int a2) 45196263Sobrien{ 45296263Sobrien return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); 45396263Sobrien} 45496263Sobrien 45596263Sobrien/* vec_vadduws */ 45696263Sobrien 45796263Sobrieninline vector unsigned int 45896263Sobrienvec_vadduws (vector signed int a1, vector unsigned int a2) 45996263Sobrien{ 46096263Sobrien return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 46196263Sobrien} 46296263Sobrien 46396263Sobrieninline vector unsigned int 46496263Sobrienvec_vadduws (vector unsigned int a1, vector signed int a2) 46596263Sobrien{ 46696263Sobrien return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 46796263Sobrien} 46896263Sobrien 46996263Sobrieninline vector unsigned int 47096263Sobrienvec_vadduws (vector unsigned int a1, vector unsigned int a2) 47196263Sobrien{ 47296263Sobrien return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); 47396263Sobrien} 47496263Sobrien 47596263Sobrien/* vec_vaddshs */ 47696263Sobrieninline vector signed short 47796263Sobrienvec_vaddshs (vector signed short a1, vector signed short a2) 47896263Sobrien{ 47996263Sobrien return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); 48096263Sobrien} 48196263Sobrien 48296263Sobrien/* vec_vadduhs */ 48396263Sobrien 48496263Sobrieninline vector unsigned short 48596263Sobrienvec_vadduhs (vector signed short a1, vector unsigned short a2) 48696263Sobrien{ 48796263Sobrien return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 48896263Sobrien} 48996263Sobrien 49096263Sobrieninline vector unsigned short 49196263Sobrienvec_vadduhs (vector unsigned short a1, vector signed short a2) 49296263Sobrien{ 49396263Sobrien return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 49496263Sobrien} 49596263Sobrien 49696263Sobrieninline vector unsigned short 49796263Sobrienvec_vadduhs (vector unsigned short a1, vector unsigned short a2) 49896263Sobrien{ 49996263Sobrien return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); 50096263Sobrien} 50196263Sobrien 50296263Sobrien/* vec_vaddsbs */ 50396263Sobrien 50496263Sobrieninline vector signed char 50596263Sobrienvec_vaddsbs (vector signed char a1, vector signed char a2) 50696263Sobrien{ 50796263Sobrien return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); 50896263Sobrien} 50996263Sobrien 51096263Sobrien/* vec_vaddubs */ 51196263Sobrien 51296263Sobrieninline vector unsigned char 51396263Sobrienvec_vaddubs (vector signed char a1, vector unsigned char a2) 51496263Sobrien{ 51596263Sobrien return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 51696263Sobrien} 51796263Sobrien 51896263Sobrieninline vector unsigned char 51996263Sobrienvec_vaddubs (vector unsigned char a1, vector signed char a2) 52096263Sobrien{ 52196263Sobrien return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 52296263Sobrien} 52396263Sobrien 52496263Sobrieninline vector unsigned char 52596263Sobrienvec_vaddubs (vector unsigned char a1, vector unsigned char a2) 52696263Sobrien{ 52796263Sobrien return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); 52896263Sobrien} 52996263Sobrien 53096263Sobrien/* vec_and */ 53196263Sobrien 53296263Sobrieninline vector float 53396263Sobrienvec_and (vector float a1, vector float a2) 53496263Sobrien{ 53596263Sobrien return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 53696263Sobrien} 53796263Sobrien 53896263Sobrieninline vector float 53996263Sobrienvec_and (vector float a1, vector signed int a2) 54096263Sobrien{ 54196263Sobrien return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 54296263Sobrien} 54396263Sobrien 54496263Sobrieninline vector float 54596263Sobrienvec_and (vector signed int a1, vector float a2) 54696263Sobrien{ 54796263Sobrien return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 54896263Sobrien} 54996263Sobrien 55096263Sobrieninline vector signed int 55196263Sobrienvec_and (vector signed int a1, vector signed int a2) 55296263Sobrien{ 55396263Sobrien return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 55496263Sobrien} 55596263Sobrien 55696263Sobrieninline vector unsigned int 55796263Sobrienvec_and (vector signed int a1, vector unsigned int a2) 55896263Sobrien{ 55996263Sobrien return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 56096263Sobrien} 56196263Sobrien 56296263Sobrieninline vector unsigned int 56396263Sobrienvec_and (vector unsigned int a1, vector signed int a2) 56496263Sobrien{ 56596263Sobrien return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 56696263Sobrien} 56796263Sobrien 56896263Sobrieninline vector unsigned int 56996263Sobrienvec_and (vector unsigned int a1, vector unsigned int a2) 57096263Sobrien{ 57196263Sobrien return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 57296263Sobrien} 57396263Sobrien 57496263Sobrieninline vector signed short 57596263Sobrienvec_and (vector signed short a1, vector signed short a2) 57696263Sobrien{ 57796263Sobrien return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 57896263Sobrien} 57996263Sobrien 58096263Sobrieninline vector unsigned short 58196263Sobrienvec_and (vector signed short a1, vector unsigned short a2) 58296263Sobrien{ 58396263Sobrien return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 58496263Sobrien} 58596263Sobrien 58696263Sobrieninline vector unsigned short 58796263Sobrienvec_and (vector unsigned short a1, vector signed short a2) 58896263Sobrien{ 58996263Sobrien return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 59096263Sobrien} 59196263Sobrien 59296263Sobrieninline vector unsigned short 59396263Sobrienvec_and (vector unsigned short a1, vector unsigned short a2) 59496263Sobrien{ 59596263Sobrien return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 59696263Sobrien} 59796263Sobrien 59896263Sobrieninline vector signed char 59996263Sobrienvec_and (vector signed char a1, vector signed char a2) 60096263Sobrien{ 60196263Sobrien return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 60296263Sobrien} 60396263Sobrien 60496263Sobrieninline vector unsigned char 60596263Sobrienvec_and (vector signed char a1, vector unsigned char a2) 60696263Sobrien{ 60796263Sobrien return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 60896263Sobrien} 60996263Sobrien 61096263Sobrieninline vector unsigned char 61196263Sobrienvec_and (vector unsigned char a1, vector signed char a2) 61296263Sobrien{ 61396263Sobrien return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 61496263Sobrien} 61596263Sobrien 61696263Sobrieninline vector unsigned char 61796263Sobrienvec_and (vector unsigned char a1, vector unsigned char a2) 61896263Sobrien{ 61996263Sobrien return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); 62096263Sobrien} 62196263Sobrien 62296263Sobrien/* vec_andc */ 62396263Sobrien 62496263Sobrieninline vector float 62596263Sobrienvec_andc (vector float a1, vector float a2) 62696263Sobrien{ 62796263Sobrien return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 62896263Sobrien} 62996263Sobrien 63096263Sobrieninline vector float 63196263Sobrienvec_andc (vector float a1, vector signed int a2) 63296263Sobrien{ 63396263Sobrien return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 63496263Sobrien} 63596263Sobrien 63696263Sobrieninline vector float 63796263Sobrienvec_andc (vector signed int a1, vector float a2) 63896263Sobrien{ 63996263Sobrien return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 64096263Sobrien} 64196263Sobrien 64296263Sobrieninline vector signed int 64396263Sobrienvec_andc (vector signed int a1, vector signed int a2) 64496263Sobrien{ 64596263Sobrien return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 64696263Sobrien} 64796263Sobrien 64896263Sobrieninline vector unsigned int 64996263Sobrienvec_andc (vector signed int a1, vector unsigned int a2) 65096263Sobrien{ 65196263Sobrien return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 65296263Sobrien} 65396263Sobrien 65496263Sobrieninline vector unsigned int 65596263Sobrienvec_andc (vector unsigned int a1, vector signed int a2) 65696263Sobrien{ 65796263Sobrien return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 65896263Sobrien} 65996263Sobrien 66096263Sobrieninline vector unsigned int 66196263Sobrienvec_andc (vector unsigned int a1, vector unsigned int a2) 66296263Sobrien{ 66396263Sobrien return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 66496263Sobrien} 66596263Sobrien 66696263Sobrieninline vector signed short 66796263Sobrienvec_andc (vector signed short a1, vector signed short a2) 66896263Sobrien{ 66996263Sobrien return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 67096263Sobrien} 67196263Sobrien 67296263Sobrieninline vector unsigned short 67396263Sobrienvec_andc (vector signed short a1, vector unsigned short a2) 67496263Sobrien{ 67596263Sobrien return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 67696263Sobrien} 67796263Sobrien 67896263Sobrieninline vector unsigned short 67996263Sobrienvec_andc (vector unsigned short a1, vector signed short a2) 68096263Sobrien{ 68196263Sobrien return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 68296263Sobrien} 68396263Sobrien 68496263Sobrieninline vector unsigned short 68596263Sobrienvec_andc (vector unsigned short a1, vector unsigned short a2) 68696263Sobrien{ 68796263Sobrien return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 68896263Sobrien} 68996263Sobrien 69096263Sobrieninline vector signed char 69196263Sobrienvec_andc (vector signed char a1, vector signed char a2) 69296263Sobrien{ 69396263Sobrien return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 69496263Sobrien} 69596263Sobrien 69696263Sobrieninline vector unsigned char 69796263Sobrienvec_andc (vector signed char a1, vector unsigned char a2) 69896263Sobrien{ 69996263Sobrien return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 70096263Sobrien} 70196263Sobrien 70296263Sobrieninline vector unsigned char 70396263Sobrienvec_andc (vector unsigned char a1, vector signed char a2) 70496263Sobrien{ 70596263Sobrien return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 70696263Sobrien} 70796263Sobrien 70896263Sobrieninline vector unsigned char 70996263Sobrienvec_andc (vector unsigned char a1, vector unsigned char a2) 71096263Sobrien{ 71196263Sobrien return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); 71296263Sobrien} 71396263Sobrien 71496263Sobrien/* vec_avg */ 71596263Sobrien 71696263Sobrieninline vector unsigned char 71796263Sobrienvec_avg (vector unsigned char a1, vector unsigned char a2) 71896263Sobrien{ 71996263Sobrien return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2); 72096263Sobrien} 72196263Sobrien 72296263Sobrieninline vector signed char 72396263Sobrienvec_avg (vector signed char a1, vector signed char a2) 72496263Sobrien{ 72596263Sobrien return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2); 72696263Sobrien} 72796263Sobrien 72896263Sobrieninline vector unsigned short 72996263Sobrienvec_avg (vector unsigned short a1, vector unsigned short a2) 73096263Sobrien{ 73196263Sobrien return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2); 73296263Sobrien} 73396263Sobrien 73496263Sobrieninline vector signed short 73596263Sobrienvec_avg (vector signed short a1, vector signed short a2) 73696263Sobrien{ 73796263Sobrien return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2); 73896263Sobrien} 73996263Sobrien 74096263Sobrieninline vector unsigned int 74196263Sobrienvec_avg (vector unsigned int a1, vector unsigned int a2) 74296263Sobrien{ 74396263Sobrien return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2); 74496263Sobrien} 74596263Sobrien 74696263Sobrieninline vector signed int 74796263Sobrienvec_avg (vector signed int a1, vector signed int a2) 74896263Sobrien{ 74996263Sobrien return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2); 75096263Sobrien} 75196263Sobrien 75296263Sobrien/* vec_vavgsw */ 75396263Sobrien 75496263Sobrieninline vector signed int 75596263Sobrienvec_vavgsw (vector signed int a1, vector signed int a2) 75696263Sobrien{ 75796263Sobrien return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2); 75896263Sobrien} 75996263Sobrien 76096263Sobrien/* vec_vavguw */ 76196263Sobrien 76296263Sobrieninline vector unsigned int 76396263Sobrienvec_vavguw (vector unsigned int a1, vector unsigned int a2) 76496263Sobrien{ 76596263Sobrien return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2); 76696263Sobrien} 76796263Sobrien 76896263Sobrien/* vec_vavgsh */ 76996263Sobrien 77096263Sobrieninline vector signed short 77196263Sobrienvec_vavgsh (vector signed short a1, vector signed short a2) 77296263Sobrien{ 77396263Sobrien return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2); 77496263Sobrien} 77596263Sobrien 77696263Sobrien/* vec_vavguh */ 77796263Sobrien 77896263Sobrieninline vector unsigned short 77996263Sobrienvec_vavguh (vector unsigned short a1, vector unsigned short a2) 78096263Sobrien{ 78196263Sobrien return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2); 78296263Sobrien} 78396263Sobrien 78496263Sobrien/* vec_vavgsb */ 78596263Sobrien 78696263Sobrieninline vector signed char 78796263Sobrienvec_vavgsb (vector signed char a1, vector signed char a2) 78896263Sobrien{ 78996263Sobrien return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2); 79096263Sobrien} 79196263Sobrien 79296263Sobrien/* vec_vavgub */ 79396263Sobrien 79496263Sobrieninline vector unsigned char 79596263Sobrienvec_vavgub (vector unsigned char a1, vector unsigned char a2) 79696263Sobrien{ 79796263Sobrien return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2); 79896263Sobrien} 79996263Sobrien 80096263Sobrien/* vec_ceil */ 80196263Sobrien 80296263Sobrieninline vector float 80396263Sobrienvec_ceil (vector float a1) 80496263Sobrien{ 80596263Sobrien return (vector float) __builtin_altivec_vrfip ((vector float) a1); 80696263Sobrien} 80796263Sobrien 80896263Sobrien/* vec_cmpb */ 80996263Sobrien 81096263Sobrieninline vector signed int 81196263Sobrienvec_cmpb (vector float a1, vector float a2) 81296263Sobrien{ 81396263Sobrien return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2); 81496263Sobrien} 81596263Sobrien 81696263Sobrien/* vec_cmpeq */ 81796263Sobrien 81896263Sobrieninline vector signed char 81996263Sobrienvec_cmpeq (vector signed char a1, vector signed char a2) 82096263Sobrien{ 82196263Sobrien return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 82296263Sobrien} 82396263Sobrien 82496263Sobrieninline vector signed char 82596263Sobrienvec_cmpeq (vector unsigned char a1, vector unsigned char a2) 82696263Sobrien{ 82796263Sobrien return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 82896263Sobrien} 82996263Sobrien 83096263Sobrieninline vector signed short 83196263Sobrienvec_cmpeq (vector signed short a1, vector signed short a2) 83296263Sobrien{ 83396263Sobrien return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 83496263Sobrien} 83596263Sobrien 83696263Sobrieninline vector signed short 83796263Sobrienvec_cmpeq (vector unsigned short a1, vector unsigned short a2) 83896263Sobrien{ 83996263Sobrien return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 84096263Sobrien} 84196263Sobrien 84296263Sobrieninline vector signed int 84396263Sobrienvec_cmpeq (vector signed int a1, vector signed int a2) 84496263Sobrien{ 84596263Sobrien return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 84696263Sobrien} 84796263Sobrien 84896263Sobrieninline vector signed int 84996263Sobrienvec_cmpeq (vector unsigned int a1, vector unsigned int a2) 85096263Sobrien{ 85196263Sobrien return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 85296263Sobrien} 85396263Sobrien 85496263Sobrieninline vector signed int 85596263Sobrienvec_cmpeq (vector float a1, vector float a2) 85696263Sobrien{ 85796263Sobrien return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); 85896263Sobrien} 85996263Sobrien 86096263Sobrien/* vec_vcmpeqfp */ 86196263Sobrien 86296263Sobrieninline vector signed int 86396263Sobrienvec_vcmpeqfp (vector float a1, vector float a2) 86496263Sobrien{ 86596263Sobrien return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); 86696263Sobrien} 86796263Sobrien 86896263Sobrien/* vec_vcmpequw */ 86996263Sobrien 87096263Sobrieninline vector signed int 87196263Sobrienvec_vcmpequw (vector signed int a1, vector signed int a2) 87296263Sobrien{ 87396263Sobrien return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 87496263Sobrien} 87596263Sobrien 87696263Sobrieninline vector signed int 87796263Sobrienvec_vcmpequw (vector unsigned int a1, vector unsigned int a2) 87896263Sobrien{ 87996263Sobrien return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); 88096263Sobrien} 88196263Sobrien 88296263Sobrien/* vec_vcmpequh */ 88396263Sobrien 88496263Sobrieninline vector signed short 88596263Sobrienvec_vcmpequh (vector signed short a1, vector signed short a2) 88696263Sobrien{ 88796263Sobrien return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 88896263Sobrien} 88996263Sobrien 89096263Sobrieninline vector signed short 89196263Sobrienvec_vcmpequh (vector unsigned short a1, vector unsigned short a2) 89296263Sobrien{ 89396263Sobrien return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); 89496263Sobrien} 89596263Sobrien 89696263Sobrien/* vec_vcmpequb */ 89796263Sobrien 89896263Sobrieninline vector signed char 89996263Sobrienvec_vcmpequb (vector signed char a1, vector signed char a2) 90096263Sobrien{ 90196263Sobrien return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 90296263Sobrien} 90396263Sobrien 90496263Sobrieninline vector signed char 90596263Sobrienvec_vcmpequb (vector unsigned char a1, vector unsigned char a2) 90696263Sobrien{ 90796263Sobrien return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); 90896263Sobrien} 90996263Sobrien 91096263Sobrien/* vec_cmpge */ 91196263Sobrien 91296263Sobrieninline vector signed int 91396263Sobrienvec_cmpge (vector float a1, vector float a2) 91496263Sobrien{ 91596263Sobrien return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2); 91696263Sobrien} 91796263Sobrien 91896263Sobrien/* vec_cmpgt */ 91996263Sobrien 92096263Sobrieninline vector signed char 92196263Sobrienvec_cmpgt (vector unsigned char a1, vector unsigned char a2) 92296263Sobrien{ 92396263Sobrien return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); 92496263Sobrien} 92596263Sobrien 92696263Sobrieninline vector signed char 92796263Sobrienvec_cmpgt (vector signed char a1, vector signed char a2) 92896263Sobrien{ 92996263Sobrien return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); 93096263Sobrien} 93196263Sobrien 93296263Sobrieninline vector signed short 93396263Sobrienvec_cmpgt (vector unsigned short a1, vector unsigned short a2) 93496263Sobrien{ 93596263Sobrien return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); 93696263Sobrien} 93796263Sobrien 93896263Sobrieninline vector signed short 93996263Sobrienvec_cmpgt (vector signed short a1, vector signed short a2) 94096263Sobrien{ 94196263Sobrien return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); 94296263Sobrien} 94396263Sobrien 94496263Sobrieninline vector signed int 94596263Sobrienvec_cmpgt (vector unsigned int a1, vector unsigned int a2) 94696263Sobrien{ 94796263Sobrien return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); 94896263Sobrien} 94996263Sobrien 95096263Sobrieninline vector signed int 95196263Sobrienvec_cmpgt (vector signed int a1, vector signed int a2) 95296263Sobrien{ 95396263Sobrien return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); 95496263Sobrien} 95596263Sobrien 95696263Sobrieninline vector signed int 95796263Sobrienvec_cmpgt (vector float a1, vector float a2) 95896263Sobrien{ 95996263Sobrien return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); 96096263Sobrien} 96196263Sobrien 96296263Sobrien/* vec_vcmpgtfp */ 96396263Sobrien 96496263Sobrieninline vector signed int 96596263Sobrienvec_vcmpgtfp (vector float a1, vector float a2) 96696263Sobrien{ 96796263Sobrien return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); 96896263Sobrien} 96996263Sobrien 97096263Sobrien/* vec_vcmpgtsw */ 97196263Sobrien 97296263Sobrieninline vector signed int 97396263Sobrienvec_vcmpgtsw (vector signed int a1, vector signed int a2) 97496263Sobrien{ 97596263Sobrien return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); 97696263Sobrien} 97796263Sobrien 97896263Sobrien/* vec_vcmpgtuw */ 97996263Sobrien 98096263Sobrieninline vector signed int 98196263Sobrienvec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2) 98296263Sobrien{ 98396263Sobrien return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); 98496263Sobrien} 98596263Sobrien 98696263Sobrien/* vec_vcmpgtsh */ 98796263Sobrien 98896263Sobrieninline vector signed short 98996263Sobrienvec_cmpgtsh (vector signed short a1, vector signed short a2) 99096263Sobrien{ 99196263Sobrien return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); 99296263Sobrien} 99396263Sobrien 99496263Sobrien/* vec_vcmpgtuh */ 99596263Sobrien 99696263Sobrieninline vector signed short 99796263Sobrienvec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2) 99896263Sobrien{ 99996263Sobrien return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); 100096263Sobrien} 100196263Sobrien 100296263Sobrien/* vec_vcmpgtsb */ 100396263Sobrien 100496263Sobrieninline vector signed char 100596263Sobrienvec_vcmpgtsb (vector signed char a1, vector signed char a2) 100696263Sobrien{ 100796263Sobrien return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); 100896263Sobrien} 100996263Sobrien 101096263Sobrien/* vec_vcmpgtub */ 101196263Sobrien 101296263Sobrieninline vector signed char 101396263Sobrienvec_vcmpgtub (vector unsigned char a1, vector unsigned char a2) 101496263Sobrien{ 101596263Sobrien return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); 101696263Sobrien} 101796263Sobrien 101896263Sobrien/* vec_cmple */ 101996263Sobrien 102096263Sobrieninline vector signed int 102196263Sobrienvec_cmple (vector float a1, vector float a2) 102296263Sobrien{ 102396263Sobrien return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2); 102496263Sobrien} 102596263Sobrien 102696263Sobrien/* vec_cmplt */ 102796263Sobrien 102896263Sobrieninline vector signed char 102996263Sobrienvec_cmplt (vector unsigned char a1, vector unsigned char a2) 103096263Sobrien{ 103196263Sobrien return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); 103296263Sobrien} 103396263Sobrien 103496263Sobrieninline vector signed char 103596263Sobrienvec_cmplt (vector signed char a1, vector signed char a2) 103696263Sobrien{ 103796263Sobrien return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); 103896263Sobrien} 103996263Sobrien 104096263Sobrieninline vector signed short 104196263Sobrienvec_cmplt (vector unsigned short a1, vector unsigned short a2) 104296263Sobrien{ 104396263Sobrien return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); 104496263Sobrien} 104596263Sobrien 104696263Sobrieninline vector signed short 104796263Sobrienvec_cmplt (vector signed short a1, vector signed short a2) 104896263Sobrien{ 104996263Sobrien return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); 105096263Sobrien} 105196263Sobrien 105296263Sobrieninline vector signed int 105396263Sobrienvec_cmplt (vector unsigned int a1, vector unsigned int a2) 105496263Sobrien{ 105596263Sobrien return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); 105696263Sobrien} 105796263Sobrien 105896263Sobrieninline vector signed int 105996263Sobrienvec_cmplt (vector signed int a1, vector signed int a2) 106096263Sobrien{ 106196263Sobrien return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); 106296263Sobrien} 106396263Sobrien 106496263Sobrieninline vector signed int 106596263Sobrienvec_cmplt (vector float a1, vector float a2) 106696263Sobrien{ 106796263Sobrien return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); 106896263Sobrien} 106996263Sobrien 107096263Sobrien/* vec_ctf */ 107196263Sobrien 107296263Sobrieninline vector float 107396263Sobrienvec_ctf (vector unsigned int a1, const char a2) 107496263Sobrien{ 107596263Sobrien return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); 107696263Sobrien} 107796263Sobrien 107896263Sobrieninline vector float 107996263Sobrienvec_ctf (vector signed int a1, const char a2) 108096263Sobrien{ 108196263Sobrien return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); 108296263Sobrien} 108396263Sobrien 108496263Sobrien/* vec_vcfsx */ 108596263Sobrien 108696263Sobrieninline vector float 108796263Sobrienvec_vcfsx (vector signed int a1, const char a2) 108896263Sobrien{ 108996263Sobrien return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); 109096263Sobrien} 109196263Sobrien 109296263Sobrien/* vec_vcfux */ 109396263Sobrien 109496263Sobrieninline vector float 109596263Sobrienvec_vcfux (vector unsigned int a1, const char a2) 109696263Sobrien{ 109796263Sobrien return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); 109896263Sobrien} 109996263Sobrien 110096263Sobrien/* vec_cts */ 110196263Sobrien 110296263Sobrieninline vector signed int 110396263Sobrienvec_cts (vector float a1, const char a2) 110496263Sobrien{ 110596263Sobrien return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2); 110696263Sobrien} 110796263Sobrien 110896263Sobrien/* vec_ctu */ 110996263Sobrien 111096263Sobrieninline vector unsigned int 111196263Sobrienvec_ctu (vector float a1, const char a2) 111296263Sobrien{ 111396263Sobrien return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2); 111496263Sobrien} 111596263Sobrien 111696263Sobrien/* vec_dss */ 111796263Sobrien 111896263Sobrieninline void 111996263Sobrienvec_dss (const char a1) 112096263Sobrien{ 112196263Sobrien __builtin_altivec_dss (a1); 112296263Sobrien} 112396263Sobrien 112496263Sobrien/* vec_dssall */ 112596263Sobrien 112696263Sobrieninline void 112796263Sobrienvec_dssall () 112896263Sobrien{ 112996263Sobrien __builtin_altivec_dssall (); 113096263Sobrien} 113196263Sobrien 113296263Sobrien/* vec_dst */ 113396263Sobrien 113496263Sobrieninline void 113596263Sobrienvec_dst (void *a1, int a2, const char a3) 113696263Sobrien{ 113796263Sobrien __builtin_altivec_dst ((void *) a1, a2, a3); 113896263Sobrien} 113996263Sobrien 114096263Sobrien/* vec_dstst */ 114196263Sobrien 114296263Sobrieninline void 114396263Sobrienvec_dstst (void *a1, int a2, const char a3) 114496263Sobrien{ 114596263Sobrien __builtin_altivec_dstst ((void *) a1, a2, a3); 114696263Sobrien} 114796263Sobrien 114896263Sobrien/* vec_dststt */ 114996263Sobrien 115096263Sobrieninline void 115196263Sobrienvec_dststt (void *a1, int a2, const char a3) 115296263Sobrien{ 115396263Sobrien __builtin_altivec_dststt ((void *) a1, a2, a3); 115496263Sobrien} 115596263Sobrien 115696263Sobrien/* vec_dstt */ 115796263Sobrien 115896263Sobrieninline void 115996263Sobrienvec_dstt (void *a1, int a2, const char a3) 116096263Sobrien{ 116196263Sobrien __builtin_altivec_dstt ((void *) a1, a2, a3); 116296263Sobrien} 116396263Sobrien 116496263Sobrien/* vec_expte */ 116596263Sobrien 116696263Sobrieninline vector float 116796263Sobrienvec_expte (vector float a1) 116896263Sobrien{ 116996263Sobrien return (vector float) __builtin_altivec_vexptefp ((vector float) a1); 117096263Sobrien} 117196263Sobrien 117296263Sobrien/* vec_floor */ 117396263Sobrien 117496263Sobrieninline vector float 117596263Sobrienvec_floor (vector float a1) 117696263Sobrien{ 117796263Sobrien return (vector float) __builtin_altivec_vrfim ((vector float) a1); 117896263Sobrien} 117996263Sobrien 118096263Sobrien/* vec_ld */ 118196263Sobrien 118296263Sobrieninline vector float 118396263Sobrienvec_ld (int a1, vector float *a2) 118496263Sobrien{ 118596263Sobrien return (vector float) __builtin_altivec_lvx (a1, (void *) a2); 118696263Sobrien} 118796263Sobrien 118896263Sobrieninline vector float 118996263Sobrienvec_ld (int a1, float *a2) 119096263Sobrien{ 119196263Sobrien return (vector float) __builtin_altivec_lvx (a1, (void *) a2); 119296263Sobrien} 119396263Sobrien 119496263Sobrieninline vector signed int 119596263Sobrienvec_ld (int a1, vector signed int *a2) 119696263Sobrien{ 119796263Sobrien return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); 119896263Sobrien} 119996263Sobrien 120096263Sobrieninline vector signed int 120196263Sobrienvec_ld (int a1, signed int *a2) 120296263Sobrien{ 120396263Sobrien return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); 120496263Sobrien} 120596263Sobrien 120696263Sobrieninline vector unsigned int 120796263Sobrienvec_ld (int a1, vector unsigned int *a2) 120896263Sobrien{ 120996263Sobrien return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); 121096263Sobrien} 121196263Sobrien 121296263Sobrieninline vector unsigned int 121396263Sobrienvec_ld (int a1, unsigned int *a2) 121496263Sobrien{ 121596263Sobrien return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); 121696263Sobrien} 121796263Sobrien 121896263Sobrieninline vector signed short 121996263Sobrienvec_ld (int a1, vector signed short *a2) 122096263Sobrien{ 122196263Sobrien return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); 122296263Sobrien} 122396263Sobrien 122496263Sobrieninline vector signed short 122596263Sobrienvec_ld (int a1, signed short *a2) 122696263Sobrien{ 122796263Sobrien return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); 122896263Sobrien} 122996263Sobrien 123096263Sobrieninline vector unsigned short 123196263Sobrienvec_ld (int a1, vector unsigned short *a2) 123296263Sobrien{ 123396263Sobrien return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); 123496263Sobrien} 123596263Sobrien 123696263Sobrieninline vector unsigned short 123796263Sobrienvec_ld (int a1, unsigned short *a2) 123896263Sobrien{ 123996263Sobrien return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); 124096263Sobrien} 124196263Sobrien 124296263Sobrieninline vector signed char 124396263Sobrienvec_ld (int a1, vector signed char *a2) 124496263Sobrien{ 124596263Sobrien return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); 124696263Sobrien} 124796263Sobrien 124896263Sobrieninline vector signed char 124996263Sobrienvec_ld (int a1, signed char *a2) 125096263Sobrien{ 125196263Sobrien return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); 125296263Sobrien} 125396263Sobrien 125496263Sobrieninline vector unsigned char 125596263Sobrienvec_ld (int a1, vector unsigned char *a2) 125696263Sobrien{ 125796263Sobrien return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); 125896263Sobrien} 125996263Sobrien 126096263Sobrieninline vector unsigned char 126196263Sobrienvec_ld (int a1, unsigned char *a2) 126296263Sobrien{ 126396263Sobrien return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); 126496263Sobrien} 126596263Sobrien 126696263Sobrien/* vec_lde */ 126796263Sobrien 126896263Sobrieninline vector signed char 126996263Sobrienvec_lde (int a1, signed char *a2) 127096263Sobrien{ 127196263Sobrien return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); 127296263Sobrien} 127396263Sobrien 127496263Sobrieninline vector unsigned char 127596263Sobrienvec_lde (int a1, unsigned char *a2) 127696263Sobrien{ 127796263Sobrien return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); 127896263Sobrien} 127996263Sobrien 128096263Sobrieninline vector signed short 128196263Sobrienvec_lde (int a1, signed short *a2) 128296263Sobrien{ 128396263Sobrien return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); 128496263Sobrien} 128596263Sobrien 128696263Sobrieninline vector unsigned short 128796263Sobrienvec_lde (int a1, unsigned short *a2) 128896263Sobrien{ 128996263Sobrien return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); 129096263Sobrien} 129196263Sobrien 129296263Sobrieninline vector float 129396263Sobrienvec_lde (int a1, float *a2) 129496263Sobrien{ 129596263Sobrien return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); 129696263Sobrien} 129796263Sobrien 129896263Sobrieninline vector signed int 129996263Sobrienvec_lde (int a1, signed int *a2) 130096263Sobrien{ 130196263Sobrien return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); 130296263Sobrien} 130396263Sobrien 130496263Sobrieninline vector unsigned int 130596263Sobrienvec_lde (int a1, unsigned int *a2) 130696263Sobrien{ 130796263Sobrien return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); 130896263Sobrien} 130996263Sobrien 131096263Sobrien/* vec_lvewx */ 131196263Sobrien 131296263Sobrieninline vector float 131396263Sobrienvec_lvewx (int a1, float *a2) 131496263Sobrien{ 131596263Sobrien return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); 131696263Sobrien} 131796263Sobrien 131896263Sobrieninline vector signed int 131996263Sobrienvec_lvewx (int a1, signed int *a2) 132096263Sobrien{ 132196263Sobrien return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); 132296263Sobrien} 132396263Sobrien 132496263Sobrieninline vector unsigned int 132596263Sobrienvec_lvewx (int a1, unsigned int *a2) 132696263Sobrien{ 132796263Sobrien return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); 132896263Sobrien} 132996263Sobrien 133096263Sobrien/* vec_lvehx */ 133196263Sobrien 133296263Sobrieninline vector signed short 133396263Sobrienvec_lvehx (int a1, signed short *a2) 133496263Sobrien{ 133596263Sobrien return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); 133696263Sobrien} 133796263Sobrien 133896263Sobrieninline vector unsigned short 133996263Sobrienvec_lvehx (int a1, unsigned short *a2) 134096263Sobrien{ 134196263Sobrien return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); 134296263Sobrien} 134396263Sobrien 134496263Sobrien/* vec_lvebx */ 134596263Sobrien 134696263Sobrieninline vector signed char 134796263Sobrienvec_lvebx (int a1, signed char *a2) 134896263Sobrien{ 134996263Sobrien return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); 135096263Sobrien} 135196263Sobrien 135296263Sobrieninline vector unsigned char 135396263Sobrienvec_lvebx (int a1, unsigned char *a2) 135496263Sobrien{ 135596263Sobrien return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); 135696263Sobrien} 135796263Sobrien 135896263Sobrien/* vec_ldl */ 135996263Sobrien 136096263Sobrieninline vector float 136196263Sobrienvec_ldl (int a1, vector float *a2) 136296263Sobrien{ 136396263Sobrien return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); 136496263Sobrien} 136596263Sobrien 136696263Sobrieninline vector float 136796263Sobrienvec_ldl (int a1, float *a2) 136896263Sobrien{ 136996263Sobrien return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); 137096263Sobrien} 137196263Sobrien 137296263Sobrieninline vector signed int 137396263Sobrienvec_ldl (int a1, vector signed int *a2) 137496263Sobrien{ 137596263Sobrien return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); 137696263Sobrien} 137796263Sobrien 137896263Sobrieninline vector signed int 137996263Sobrienvec_ldl (int a1, signed int *a2) 138096263Sobrien{ 138196263Sobrien return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); 138296263Sobrien} 138396263Sobrien 138496263Sobrieninline vector unsigned int 138596263Sobrienvec_ldl (int a1, vector unsigned int *a2) 138696263Sobrien{ 138796263Sobrien return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); 138896263Sobrien} 138996263Sobrien 139096263Sobrieninline vector unsigned int 139196263Sobrienvec_ldl (int a1, unsigned int *a2) 139296263Sobrien{ 139396263Sobrien return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); 139496263Sobrien} 139596263Sobrien 139696263Sobrieninline vector signed short 139796263Sobrienvec_ldl (int a1, vector signed short *a2) 139896263Sobrien{ 139996263Sobrien return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); 140096263Sobrien} 140196263Sobrien 140296263Sobrieninline vector signed short 140396263Sobrienvec_ldl (int a1, signed short *a2) 140496263Sobrien{ 140596263Sobrien return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); 140696263Sobrien} 140796263Sobrien 140896263Sobrieninline vector unsigned short 140996263Sobrienvec_ldl (int a1, vector unsigned short *a2) 141096263Sobrien{ 141196263Sobrien return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); 141296263Sobrien} 141396263Sobrien 141496263Sobrieninline vector unsigned short 141596263Sobrienvec_ldl (int a1, unsigned short *a2) 141696263Sobrien{ 141796263Sobrien return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); 141896263Sobrien} 141996263Sobrien 142096263Sobrieninline vector signed char 142196263Sobrienvec_ldl (int a1, vector signed char *a2) 142296263Sobrien{ 142396263Sobrien return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); 142496263Sobrien} 142596263Sobrien 142696263Sobrieninline vector signed char 142796263Sobrienvec_ldl (int a1, signed char *a2) 142896263Sobrien{ 142996263Sobrien return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); 143096263Sobrien} 143196263Sobrien 143296263Sobrieninline vector unsigned char 143396263Sobrienvec_ldl (int a1, vector unsigned char *a2) 143496263Sobrien{ 143596263Sobrien return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); 143696263Sobrien} 143796263Sobrien 143896263Sobrieninline vector unsigned char 143996263Sobrienvec_ldl (int a1, unsigned char *a2) 144096263Sobrien{ 144196263Sobrien return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); 144296263Sobrien} 144396263Sobrien 144496263Sobrien/* vec_loge */ 144596263Sobrien 144696263Sobrieninline vector float 144796263Sobrienvec_loge (vector float a1) 144896263Sobrien{ 144996263Sobrien return (vector float) __builtin_altivec_vlogefp ((vector float) a1); 145096263Sobrien} 145196263Sobrien 145296263Sobrien/* vec_lvsl */ 145396263Sobrien 145496263Sobrieninline vector unsigned char 145596263Sobrienvec_lvsl (int a1, unsigned char *a2) 145696263Sobrien{ 145796263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 145896263Sobrien} 145996263Sobrien 146096263Sobrieninline vector unsigned char 146196263Sobrienvec_lvsl (int a1, signed char *a2) 146296263Sobrien{ 146396263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 146496263Sobrien} 146596263Sobrien 146696263Sobrieninline vector unsigned char 146796263Sobrienvec_lvsl (int a1, unsigned short *a2) 146896263Sobrien{ 146996263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 147096263Sobrien} 147196263Sobrien 147296263Sobrieninline vector unsigned char 147396263Sobrienvec_lvsl (int a1, signed short *a2) 147496263Sobrien{ 147596263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 147696263Sobrien} 147796263Sobrien 147896263Sobrieninline vector unsigned char 147996263Sobrienvec_lvsl (int a1, unsigned int *a2) 148096263Sobrien{ 148196263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 148296263Sobrien} 148396263Sobrien 148496263Sobrieninline vector unsigned char 148596263Sobrienvec_lvsl (int a1, signed int *a2) 148696263Sobrien{ 148796263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 148896263Sobrien} 148996263Sobrien 149096263Sobrieninline vector unsigned char 149196263Sobrienvec_lvsl (int a1, float *a2) 149296263Sobrien{ 149396263Sobrien return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); 149496263Sobrien} 149596263Sobrien 149696263Sobrien/* vec_lvsr */ 149796263Sobrien 149896263Sobrieninline vector unsigned char 149996263Sobrienvec_lvsr (int a1, unsigned char *a2) 150096263Sobrien{ 150196263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 150296263Sobrien} 150396263Sobrien 150496263Sobrieninline vector unsigned char 150596263Sobrienvec_lvsr (int a1, signed char *a2) 150696263Sobrien{ 150796263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 150896263Sobrien} 150996263Sobrien 151096263Sobrieninline vector unsigned char 151196263Sobrienvec_lvsr (int a1, unsigned short *a2) 151296263Sobrien{ 151396263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 151496263Sobrien} 151596263Sobrien 151696263Sobrieninline vector unsigned char 151796263Sobrienvec_lvsr (int a1, signed short *a2) 151896263Sobrien{ 151996263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 152096263Sobrien} 152196263Sobrien 152296263Sobrieninline vector unsigned char 152396263Sobrienvec_lvsr (int a1, unsigned int *a2) 152496263Sobrien{ 152596263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 152696263Sobrien} 152796263Sobrien 152896263Sobrieninline vector unsigned char 152996263Sobrienvec_lvsr (int a1, signed int *a2) 153096263Sobrien{ 153196263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 153296263Sobrien} 153396263Sobrien 153496263Sobrieninline vector unsigned char 153596263Sobrienvec_lvsr (int a1, float *a2) 153696263Sobrien{ 153796263Sobrien return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); 153896263Sobrien} 153996263Sobrien 154096263Sobrien/* vec_madd */ 154196263Sobrien 154296263Sobrieninline vector float 154396263Sobrienvec_madd (vector float a1, vector float a2, vector float a3) 154496263Sobrien{ 154596263Sobrien return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3); 154696263Sobrien} 154796263Sobrien 154896263Sobrien 154996263Sobrien/* vec_madds */ 155096263Sobrien 155196263Sobrieninline vector signed short 155296263Sobrienvec_madds (vector signed short a1, vector signed short a2, vector signed short a3) 155396263Sobrien{ 155496263Sobrien return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 155596263Sobrien} 155696263Sobrien 155796263Sobrien/* vec_max */ 155896263Sobrien 155996263Sobrieninline vector unsigned char 156096263Sobrienvec_max (vector signed char a1, vector unsigned char a2) 156196263Sobrien{ 156296263Sobrien return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 156396263Sobrien} 156496263Sobrien 156596263Sobrieninline vector unsigned char 156696263Sobrienvec_max (vector unsigned char a1, vector signed char a2) 156796263Sobrien{ 156896263Sobrien return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 156996263Sobrien} 157096263Sobrien 157196263Sobrieninline vector unsigned char 157296263Sobrienvec_max (vector unsigned char a1, vector unsigned char a2) 157396263Sobrien{ 157496263Sobrien return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 157596263Sobrien} 157696263Sobrien 157796263Sobrieninline vector signed char 157896263Sobrienvec_max (vector signed char a1, vector signed char a2) 157996263Sobrien{ 158096263Sobrien return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); 158196263Sobrien} 158296263Sobrien 158396263Sobrieninline vector unsigned short 158496263Sobrienvec_max (vector signed short a1, vector unsigned short a2) 158596263Sobrien{ 158696263Sobrien return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 158796263Sobrien} 158896263Sobrien 158996263Sobrieninline vector unsigned short 159096263Sobrienvec_max (vector unsigned short a1, vector signed short a2) 159196263Sobrien{ 159296263Sobrien return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 159396263Sobrien} 159496263Sobrien 159596263Sobrieninline vector unsigned short 159696263Sobrienvec_max (vector unsigned short a1, vector unsigned short a2) 159796263Sobrien{ 159896263Sobrien return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 159996263Sobrien} 160096263Sobrien 160196263Sobrieninline vector signed short 160296263Sobrienvec_max (vector signed short a1, vector signed short a2) 160396263Sobrien{ 160496263Sobrien return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); 160596263Sobrien} 160696263Sobrien 160796263Sobrieninline vector unsigned int 160896263Sobrienvec_max (vector signed int a1, vector unsigned int a2) 160996263Sobrien{ 161096263Sobrien return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 161196263Sobrien} 161296263Sobrien 161396263Sobrieninline vector unsigned int 161496263Sobrienvec_max (vector unsigned int a1, vector signed int a2) 161596263Sobrien{ 161696263Sobrien return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 161796263Sobrien} 161896263Sobrien 161996263Sobrieninline vector unsigned int 162096263Sobrienvec_max (vector unsigned int a1, vector unsigned int a2) 162196263Sobrien{ 162296263Sobrien return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 162396263Sobrien} 162496263Sobrien 162596263Sobrieninline vector signed int 162696263Sobrienvec_max (vector signed int a1, vector signed int a2) 162796263Sobrien{ 162896263Sobrien return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); 162996263Sobrien} 163096263Sobrien 163196263Sobrieninline vector float 163296263Sobrienvec_max (vector float a1, vector float a2) 163396263Sobrien{ 163496263Sobrien return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2); 163596263Sobrien} 163696263Sobrien 163796263Sobrien/* vec_vmaxfp */ 163896263Sobrien 163996263Sobrieninline vector float 164096263Sobrienvec_vmaxfp (vector float a1, vector float a2) 164196263Sobrien{ 164296263Sobrien return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2); 164396263Sobrien} 164496263Sobrien 164596263Sobrien/* vec_vmaxsw */ 164696263Sobrien 164796263Sobrieninline vector signed int 164896263Sobrienvec_vmaxsw (vector signed int a1, vector signed int a2) 164996263Sobrien{ 165096263Sobrien return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); 165196263Sobrien} 165296263Sobrien 165396263Sobrien/* vec_vmaxuw */ 165496263Sobrien 165596263Sobrieninline vector unsigned int 165696263Sobrienvec_vmaxuw (vector signed int a1, vector unsigned int a2) 165796263Sobrien{ 165896263Sobrien return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 165996263Sobrien} 166096263Sobrien 166196263Sobrieninline vector unsigned int 166296263Sobrienvec_vmaxuw (vector unsigned int a1, vector signed int a2) 166396263Sobrien{ 166496263Sobrien return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 166596263Sobrien} 166696263Sobrien 166796263Sobrieninline vector unsigned int 166896263Sobrienvec_vmaxuw (vector unsigned int a1, vector unsigned int a2) 166996263Sobrien{ 167096263Sobrien return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); 167196263Sobrien} 167296263Sobrien 167396263Sobrien/* vec_vmaxsh */ 167496263Sobrien 167596263Sobrieninline vector signed short 167696263Sobrienvec_vmaxsh (vector signed short a1, vector signed short a2) 167796263Sobrien{ 167896263Sobrien return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); 167996263Sobrien} 168096263Sobrien 168196263Sobrien/* vec_vmaxuh */ 168296263Sobrien 168396263Sobrieninline vector unsigned short 168496263Sobrienvec_vmaxuh (vector signed short a1, vector unsigned short a2) 168596263Sobrien{ 168696263Sobrien return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 168796263Sobrien} 168896263Sobrien 168996263Sobrieninline vector unsigned short 169096263Sobrienvec_vmaxuh (vector unsigned short a1, vector signed short a2) 169196263Sobrien{ 169296263Sobrien return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 169396263Sobrien} 169496263Sobrien 169596263Sobrieninline vector unsigned short 169696263Sobrienvec_vmaxuh (vector unsigned short a1, vector unsigned short a2) 169796263Sobrien{ 169896263Sobrien return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); 169996263Sobrien} 170096263Sobrien 170196263Sobrien/* vec_vmaxsb */ 170296263Sobrien 170396263Sobrieninline vector signed char 170496263Sobrienvec_vmaxsb (vector signed char a1, vector signed char a2) 170596263Sobrien{ 170696263Sobrien return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); 170796263Sobrien} 170896263Sobrien 170996263Sobrien/* vec_vmaxub */ 171096263Sobrien 171196263Sobrieninline vector unsigned char 171296263Sobrienvec_vmaxub (vector signed char a1, vector unsigned char a2) 171396263Sobrien{ 171496263Sobrien return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 171596263Sobrien} 171696263Sobrien 171796263Sobrieninline vector unsigned char 171896263Sobrienvec_vmaxub (vector unsigned char a1, vector signed char a2) 171996263Sobrien{ 172096263Sobrien return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 172196263Sobrien} 172296263Sobrien 172396263Sobrieninline vector unsigned char 172496263Sobrienvec_vmaxub (vector unsigned char a1, vector unsigned char a2) 172596263Sobrien{ 172696263Sobrien return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); 172796263Sobrien} 172896263Sobrien 172996263Sobrien/* vec_mergeh */ 173096263Sobrien 173196263Sobrieninline vector signed char 173296263Sobrienvec_mergeh (vector signed char a1, vector signed char a2) 173396263Sobrien{ 173496263Sobrien return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 173596263Sobrien} 173696263Sobrien 173796263Sobrieninline vector unsigned char 173896263Sobrienvec_mergeh (vector unsigned char a1, vector unsigned char a2) 173996263Sobrien{ 174096263Sobrien return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 174196263Sobrien} 174296263Sobrien 174396263Sobrieninline vector signed short 174496263Sobrienvec_mergeh (vector signed short a1, vector signed short a2) 174596263Sobrien{ 174696263Sobrien return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 174796263Sobrien} 174896263Sobrien 174996263Sobrieninline vector unsigned short 175096263Sobrienvec_mergeh (vector unsigned short a1, vector unsigned short a2) 175196263Sobrien{ 175296263Sobrien return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 175396263Sobrien} 175496263Sobrien 175596263Sobrieninline vector float 175696263Sobrienvec_mergeh (vector float a1, vector float a2) 175796263Sobrien{ 175896263Sobrien return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 175996263Sobrien} 176096263Sobrien 176196263Sobrieninline vector signed int 176296263Sobrienvec_mergeh (vector signed int a1, vector signed int a2) 176396263Sobrien{ 176496263Sobrien return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 176596263Sobrien} 176696263Sobrien 176796263Sobrieninline vector unsigned int 176896263Sobrienvec_mergeh (vector unsigned int a1, vector unsigned int a2) 176996263Sobrien{ 177096263Sobrien return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 177196263Sobrien} 177296263Sobrien 177396263Sobrien/* vec_vmrghw */ 177496263Sobrien 177596263Sobrieninline vector float 177696263Sobrienvec_vmrghw (vector float a1, vector float a2) 177796263Sobrien{ 177896263Sobrien return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 177996263Sobrien} 178096263Sobrien 178196263Sobrieninline vector signed int 178296263Sobrienvec_vmrghw (vector signed int a1, vector signed int a2) 178396263Sobrien{ 178496263Sobrien return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 178596263Sobrien} 178696263Sobrien 178796263Sobrieninline vector unsigned int 178896263Sobrienvec_vmrghw (vector unsigned int a1, vector unsigned int a2) 178996263Sobrien{ 179096263Sobrien return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); 179196263Sobrien} 179296263Sobrien 179396263Sobrien/* vec_vmrghh */ 179496263Sobrien 179596263Sobrieninline vector signed short 179696263Sobrienvec_vmrghh (vector signed short a1, vector signed short a2) 179796263Sobrien{ 179896263Sobrien return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 179996263Sobrien} 180096263Sobrien 180196263Sobrieninline vector unsigned short 180296263Sobrienvec_vmrghh (vector unsigned short a1, vector unsigned short a2) 180396263Sobrien{ 180496263Sobrien return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); 180596263Sobrien} 180696263Sobrien 180796263Sobrien/* vec_vmrghb */ 180896263Sobrien 180996263Sobrieninline vector signed char 181096263Sobrienvec_vmrghb (vector signed char a1, vector signed char a2) 181196263Sobrien{ 181296263Sobrien return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 181396263Sobrien} 181496263Sobrien 181596263Sobrieninline vector unsigned char 181696263Sobrienvec_vmrghb (vector unsigned char a1, vector unsigned char a2) 181796263Sobrien{ 181896263Sobrien return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); 181996263Sobrien} 182096263Sobrien 182196263Sobrien/* vec_mergel */ 182296263Sobrien 182396263Sobrieninline vector signed char 182496263Sobrienvec_mergel (vector signed char a1, vector signed char a2) 182596263Sobrien{ 182696263Sobrien return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 182796263Sobrien} 182896263Sobrien 182996263Sobrieninline vector unsigned char 183096263Sobrienvec_mergel (vector unsigned char a1, vector unsigned char a2) 183196263Sobrien{ 183296263Sobrien return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 183396263Sobrien} 183496263Sobrien 183596263Sobrieninline vector signed short 183696263Sobrienvec_mergel (vector signed short a1, vector signed short a2) 183796263Sobrien{ 183896263Sobrien return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 183996263Sobrien} 184096263Sobrien 184196263Sobrieninline vector unsigned short 184296263Sobrienvec_mergel (vector unsigned short a1, vector unsigned short a2) 184396263Sobrien{ 184496263Sobrien return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 184596263Sobrien} 184696263Sobrien 184796263Sobrieninline vector float 184896263Sobrienvec_mergel (vector float a1, vector float a2) 184996263Sobrien{ 185096263Sobrien return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 185196263Sobrien} 185296263Sobrien 185396263Sobrieninline vector signed int 185496263Sobrienvec_mergel (vector signed int a1, vector signed int a2) 185596263Sobrien{ 185696263Sobrien return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 185796263Sobrien} 185896263Sobrien 185996263Sobrieninline vector unsigned int 186096263Sobrienvec_mergel (vector unsigned int a1, vector unsigned int a2) 186196263Sobrien{ 186296263Sobrien return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 186396263Sobrien} 186496263Sobrien 186596263Sobrien/* vec_vmrglw */ 186696263Sobrien 186796263Sobrieninline vector float 186896263Sobrienvec_vmrglw (vector float a1, vector float a2) 186996263Sobrien{ 187096263Sobrien return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 187196263Sobrien} 187296263Sobrien 187396263Sobrieninline vector signed int 187496263Sobrienvec_vmrglw (vector signed int a1, vector signed int a2) 187596263Sobrien{ 187696263Sobrien return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 187796263Sobrien} 187896263Sobrien 187996263Sobrieninline vector unsigned int 188096263Sobrienvec_vmrglw (vector unsigned int a1, vector unsigned int a2) 188196263Sobrien{ 188296263Sobrien return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); 188396263Sobrien} 188496263Sobrien 188596263Sobrien/* vec_vmrglh */ 188696263Sobrien 188796263Sobrieninline vector signed short 188896263Sobrienvec_vmrglh (vector signed short a1, vector signed short a2) 188996263Sobrien{ 189096263Sobrien return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 189196263Sobrien} 189296263Sobrien 189396263Sobrieninline vector unsigned short 189496263Sobrienvec_vmrglh (vector unsigned short a1, vector unsigned short a2) 189596263Sobrien{ 189696263Sobrien return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); 189796263Sobrien} 189896263Sobrien 189996263Sobrien/* vec_vmrglb */ 190096263Sobrien 190196263Sobrieninline vector signed char 190296263Sobrienvec_vmrglb (vector signed char a1, vector signed char a2) 190396263Sobrien{ 190496263Sobrien return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 190596263Sobrien} 190696263Sobrien 190796263Sobrieninline vector unsigned char 190896263Sobrienvec_vmrglb (vector unsigned char a1, vector unsigned char a2) 190996263Sobrien{ 191096263Sobrien return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); 191196263Sobrien} 191296263Sobrien 191396263Sobrien/* vec_mfvscr */ 191496263Sobrien 191596263Sobrieninline vector unsigned short 191696263Sobrienvec_mfvscr () 191796263Sobrien{ 191896263Sobrien return (vector unsigned short) __builtin_altivec_mfvscr (); 191996263Sobrien} 192096263Sobrien 192196263Sobrien/* vec_min */ 192296263Sobrien 192396263Sobrieninline vector unsigned char 192496263Sobrienvec_min (vector signed char a1, vector unsigned char a2) 192596263Sobrien{ 192696263Sobrien return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 192796263Sobrien} 192896263Sobrien 192996263Sobrieninline vector unsigned char 193096263Sobrienvec_min (vector unsigned char a1, vector signed char a2) 193196263Sobrien{ 193296263Sobrien return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 193396263Sobrien} 193496263Sobrien 193596263Sobrieninline vector unsigned char 193696263Sobrienvec_min (vector unsigned char a1, vector unsigned char a2) 193796263Sobrien{ 193896263Sobrien return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 193996263Sobrien} 194096263Sobrien 194196263Sobrieninline vector signed char 194296263Sobrienvec_min (vector signed char a1, vector signed char a2) 194396263Sobrien{ 194496263Sobrien return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); 194596263Sobrien} 194696263Sobrien 194796263Sobrieninline vector unsigned short 194896263Sobrienvec_min (vector signed short a1, vector unsigned short a2) 194996263Sobrien{ 195096263Sobrien return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 195196263Sobrien} 195296263Sobrien 195396263Sobrieninline vector unsigned short 195496263Sobrienvec_min (vector unsigned short a1, vector signed short a2) 195596263Sobrien{ 195696263Sobrien return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 195796263Sobrien} 195896263Sobrien 195996263Sobrieninline vector unsigned short 196096263Sobrienvec_min (vector unsigned short a1, vector unsigned short a2) 196196263Sobrien{ 196296263Sobrien return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 196396263Sobrien} 196496263Sobrien 196596263Sobrieninline vector signed short 196696263Sobrienvec_min (vector signed short a1, vector signed short a2) 196796263Sobrien{ 196896263Sobrien return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); 196996263Sobrien} 197096263Sobrien 197196263Sobrieninline vector unsigned int 197296263Sobrienvec_min (vector signed int a1, vector unsigned int a2) 197396263Sobrien{ 197496263Sobrien return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 197596263Sobrien} 197696263Sobrien 197796263Sobrieninline vector unsigned int 197896263Sobrienvec_min (vector unsigned int a1, vector signed int a2) 197996263Sobrien{ 198096263Sobrien return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 198196263Sobrien} 198296263Sobrien 198396263Sobrieninline vector unsigned int 198496263Sobrienvec_min (vector unsigned int a1, vector unsigned int a2) 198596263Sobrien{ 198696263Sobrien return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 198796263Sobrien} 198896263Sobrien 198996263Sobrieninline vector signed int 199096263Sobrienvec_min (vector signed int a1, vector signed int a2) 199196263Sobrien{ 199296263Sobrien return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); 199396263Sobrien} 199496263Sobrien 199596263Sobrieninline vector float 199696263Sobrienvec_min (vector float a1, vector float a2) 199796263Sobrien{ 199896263Sobrien return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2); 199996263Sobrien} 200096263Sobrien 200196263Sobrien/* vec_vminfp */ 200296263Sobrien 200396263Sobrieninline vector float 200496263Sobrienvec_vminfp (vector float a1, vector float a2) 200596263Sobrien{ 200696263Sobrien return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2); 200796263Sobrien} 200896263Sobrien 200996263Sobrien/* vec_vminsw */ 201096263Sobrien 201196263Sobrieninline vector signed int 201296263Sobrienvec_vminsw (vector signed int a1, vector signed int a2) 201396263Sobrien{ 201496263Sobrien return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); 201596263Sobrien} 201696263Sobrien 201796263Sobrien/* vec_vminuw */ 201896263Sobrien 201996263Sobrieninline vector unsigned int 202096263Sobrienvec_vminuw (vector signed int a1, vector unsigned int a2) 202196263Sobrien{ 202296263Sobrien return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 202396263Sobrien} 202496263Sobrien 202596263Sobrieninline vector unsigned int 202696263Sobrienvec_vminuw (vector unsigned int a1, vector signed int a2) 202796263Sobrien{ 202896263Sobrien return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 202996263Sobrien} 203096263Sobrien 203196263Sobrieninline vector unsigned int 203296263Sobrienvec_vminuw (vector unsigned int a1, vector unsigned int a2) 203396263Sobrien{ 203496263Sobrien return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); 203596263Sobrien} 203696263Sobrien 203796263Sobrien/* vec_vminsh */ 203896263Sobrien 203996263Sobrieninline vector signed short 204096263Sobrienvec_vminsh (vector signed short a1, vector signed short a2) 204196263Sobrien{ 204296263Sobrien return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); 204396263Sobrien} 204496263Sobrien 204596263Sobrien/* vec_vminuh */ 204696263Sobrien 204796263Sobrieninline vector unsigned short 204896263Sobrienvec_vminuh (vector signed short a1, vector unsigned short a2) 204996263Sobrien{ 205096263Sobrien return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 205196263Sobrien} 205296263Sobrien 205396263Sobrieninline vector unsigned short 205496263Sobrienvec_vminuh (vector unsigned short a1, vector signed short a2) 205596263Sobrien{ 205696263Sobrien return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 205796263Sobrien} 205896263Sobrien 205996263Sobrieninline vector unsigned short 206096263Sobrienvec_vminuh (vector unsigned short a1, vector unsigned short a2) 206196263Sobrien{ 206296263Sobrien return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); 206396263Sobrien} 206496263Sobrien 206596263Sobrien/* vec_vminsb */ 206696263Sobrien 206796263Sobrieninline vector signed char 206896263Sobrienvec_vminsb (vector signed char a1, vector signed char a2) 206996263Sobrien{ 207096263Sobrien return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); 207196263Sobrien} 207296263Sobrien 207396263Sobrien/* vec_vminub */ 207496263Sobrien 207596263Sobrieninline vector unsigned char 207696263Sobrienvec_vminub (vector signed char a1, vector unsigned char a2) 207796263Sobrien{ 207896263Sobrien return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 207996263Sobrien} 208096263Sobrien 208196263Sobrieninline vector unsigned char 208296263Sobrienvec_vminub (vector unsigned char a1, vector signed char a2) 208396263Sobrien{ 208496263Sobrien return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 208596263Sobrien} 208696263Sobrien 208796263Sobrieninline vector unsigned char 208896263Sobrienvec_vminub (vector unsigned char a1, vector unsigned char a2) 208996263Sobrien{ 209096263Sobrien return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); 209196263Sobrien} 209296263Sobrien 209396263Sobrien/* vec_mladd */ 209496263Sobrien 209596263Sobrieninline vector signed short 209696263Sobrienvec_mladd (vector signed short a1, vector signed short a2, vector signed short a3) 209796263Sobrien{ 209896263Sobrien return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 209996263Sobrien} 210096263Sobrien 210196263Sobrieninline vector signed short 210296263Sobrienvec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3) 210396263Sobrien{ 210496263Sobrien return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 210596263Sobrien} 210696263Sobrien 210796263Sobrieninline vector signed short 210896263Sobrienvec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3) 210996263Sobrien{ 211096263Sobrien return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 211196263Sobrien} 211296263Sobrien 211396263Sobrieninline vector unsigned short 211496263Sobrienvec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3) 211596263Sobrien{ 211696263Sobrien return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 211796263Sobrien} 211896263Sobrien 211996263Sobrien/* vec_mradds */ 212096263Sobrien 212196263Sobrieninline vector signed short 212296263Sobrienvec_mradds (vector signed short a1, vector signed short a2, vector signed short a3) 212396263Sobrien{ 212496263Sobrien return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); 212596263Sobrien} 212696263Sobrien 212796263Sobrien/* vec_msum */ 212896263Sobrien 212996263Sobrieninline vector unsigned int 213096263Sobrienvec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3) 213196263Sobrien{ 213296263Sobrien return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 213396263Sobrien} 213496263Sobrien 213596263Sobrieninline vector signed int 213696263Sobrienvec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3) 213796263Sobrien{ 213896263Sobrien return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 213996263Sobrien} 214096263Sobrien 214196263Sobrieninline vector unsigned int 214296263Sobrienvec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 214396263Sobrien{ 214496263Sobrien return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 214596263Sobrien} 214696263Sobrien 214796263Sobrieninline vector signed int 214896263Sobrienvec_msum (vector signed short a1, vector signed short a2, vector signed int a3) 214996263Sobrien{ 215096263Sobrien return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 215196263Sobrien} 215296263Sobrien 215396263Sobrien/* vec_vmsumshm */ 215496263Sobrien 215596263Sobrieninline vector signed int 215696263Sobrienvec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3) 215796263Sobrien{ 215896263Sobrien return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 215996263Sobrien} 216096263Sobrien 216196263Sobrien/* vec_vmsumuhm */ 216296263Sobrien 216396263Sobrieninline vector unsigned int 216496263Sobrienvec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 216596263Sobrien{ 216696263Sobrien return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 216796263Sobrien} 216896263Sobrien 216996263Sobrien/* vec_vmsummbm */ 217096263Sobrien 217196263Sobrieninline vector signed int 217296263Sobrienvec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3) 217396263Sobrien{ 217496263Sobrien return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 217596263Sobrien} 217696263Sobrien 217796263Sobrien/* vec_vmsumubm */ 217896263Sobrien 217996263Sobrieninline vector unsigned int 218096263Sobrienvec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3) 218196263Sobrien{ 218296263Sobrien return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); 218396263Sobrien} 218496263Sobrien 218596263Sobrien/* vec_msums */ 218696263Sobrien 218796263Sobrieninline vector unsigned int 218896263Sobrienvec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 218996263Sobrien{ 219096263Sobrien return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 219196263Sobrien} 219296263Sobrien 219396263Sobrieninline vector signed int 219496263Sobrienvec_msums (vector signed short a1, vector signed short a2, vector signed int a3) 219596263Sobrien{ 219696263Sobrien return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 219796263Sobrien} 219896263Sobrien 219996263Sobrien/* vec_vmsumshs */ 220096263Sobrien 220196263Sobrieninline vector signed int 220296263Sobrienvec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3) 220396263Sobrien{ 220496263Sobrien return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 220596263Sobrien} 220696263Sobrien 220796263Sobrien/* vec_vmsumuhs */ 220896263Sobrien 220996263Sobrieninline vector unsigned int 221096263Sobrienvec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) 221196263Sobrien{ 221296263Sobrien return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); 221396263Sobrien} 221496263Sobrien 221596263Sobrien/* vec_mtvscr */ 221696263Sobrien 221796263Sobrieninline void 221896263Sobrienvec_mtvscr (vector signed int a1) 221996263Sobrien{ 222096263Sobrien __builtin_altivec_mtvscr ((vector signed int) a1); 222196263Sobrien} 222296263Sobrien 222396263Sobrieninline void 222496263Sobrienvec_mtvscr (vector unsigned int a1) 222596263Sobrien{ 222696263Sobrien __builtin_altivec_mtvscr ((vector signed int) a1); 222796263Sobrien} 222896263Sobrien 222996263Sobrieninline void 223096263Sobrienvec_mtvscr (vector signed short a1) 223196263Sobrien{ 223296263Sobrien __builtin_altivec_mtvscr ((vector signed int) a1); 223396263Sobrien} 223496263Sobrien 223596263Sobrieninline void 223696263Sobrienvec_mtvscr (vector unsigned short a1) 223796263Sobrien{ 223896263Sobrien __builtin_altivec_mtvscr ((vector signed int) a1); 223996263Sobrien} 224096263Sobrien 224196263Sobrieninline void 224296263Sobrienvec_mtvscr (vector signed char a1) 224396263Sobrien{ 224496263Sobrien __builtin_altivec_mtvscr ((vector signed int) a1); 224596263Sobrien} 224696263Sobrien 224796263Sobrieninline void 224896263Sobrienvec_mtvscr (vector unsigned char a1) 224996263Sobrien{ 225096263Sobrien __builtin_altivec_mtvscr ((vector signed int) a1); 225196263Sobrien} 225296263Sobrien 225396263Sobrien/* vec_mule */ 225496263Sobrien 225596263Sobrieninline vector unsigned short 225696263Sobrienvec_mule (vector unsigned char a1, vector unsigned char a2) 225796263Sobrien{ 225896263Sobrien return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2); 225996263Sobrien} 226096263Sobrien 226196263Sobrieninline vector signed short 226296263Sobrienvec_mule (vector signed char a1, vector signed char a2) 226396263Sobrien{ 226496263Sobrien return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2); 226596263Sobrien} 226696263Sobrien 226796263Sobrieninline vector unsigned int 226896263Sobrienvec_mule (vector unsigned short a1, vector unsigned short a2) 226996263Sobrien{ 227096263Sobrien return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2); 227196263Sobrien} 227296263Sobrien 227396263Sobrieninline vector signed int 227496263Sobrienvec_mule (vector signed short a1, vector signed short a2) 227596263Sobrien{ 227696263Sobrien return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2); 227796263Sobrien} 227896263Sobrien 227996263Sobrien/* vec_vmulesh */ 228096263Sobrien 228196263Sobrieninline vector signed int 228296263Sobrienvec_vmulesh (vector signed short a1, vector signed short a2) 228396263Sobrien{ 228496263Sobrien return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2); 228596263Sobrien} 228696263Sobrien 228796263Sobrien/* vec_vmuleuh */ 228896263Sobrien 228996263Sobrieninline vector unsigned int 229096263Sobrienvec_vmuleuh (vector unsigned short a1, vector unsigned short a2) 229196263Sobrien{ 229296263Sobrien return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2); 229396263Sobrien} 229496263Sobrien 229596263Sobrien/* vec_vmuleub */ 229696263Sobrieninline vector unsigned short 229796263Sobrienvec_vmuleub (vector unsigned char a1, vector unsigned char a2) 229896263Sobrien{ 229996263Sobrien return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2); 230096263Sobrien} 230196263Sobrien 230296263Sobrien/* vec_mulo */ 230396263Sobrien 230496263Sobrieninline vector unsigned short 230596263Sobrienvec_mulo (vector unsigned char a1, vector unsigned char a2) 230696263Sobrien{ 230796263Sobrien return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2); 230896263Sobrien} 230996263Sobrien 231096263Sobrieninline vector signed short 231196263Sobrienvec_mulo (vector signed char a1, vector signed char a2) 231296263Sobrien{ 231396263Sobrien return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2); 231496263Sobrien} 231596263Sobrien 231696263Sobrieninline vector unsigned int 231796263Sobrienvec_mulo (vector unsigned short a1, vector unsigned short a2) 231896263Sobrien{ 231996263Sobrien return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2); 232096263Sobrien} 232196263Sobrien 232296263Sobrieninline vector signed int 232396263Sobrienvec_mulo (vector signed short a1, vector signed short a2) 232496263Sobrien{ 232596263Sobrien return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2); 232696263Sobrien} 232796263Sobrien 232896263Sobrien/* vec_vmulosh */ 232996263Sobrien 233096263Sobrieninline vector signed int 233196263Sobrienvec_vmulosh (vector signed short a1, vector signed short a2) 233296263Sobrien{ 233396263Sobrien return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2); 233496263Sobrien} 233596263Sobrien 233696263Sobrien/* vec_vmulouh */ 233796263Sobrien 233896263Sobrieninline vector unsigned int 233996263Sobrienvec_vmulouh (vector unsigned short a1, vector unsigned short a2) 234096263Sobrien{ 234196263Sobrien return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2); 234296263Sobrien} 234396263Sobrien 234496263Sobrien/* vec_vmulosb */ 234596263Sobrien 234696263Sobrieninline vector signed short 234796263Sobrienvec_vmulosb (vector signed char a1, vector signed char a2) 234896263Sobrien{ 234996263Sobrien return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2); 235096263Sobrien} 235196263Sobrien 235296263Sobrien/* vec_vmuloub */ 235396263Sobrien 235496263Sobrieninline vector unsigned short 235596263Sobrienvec_vmuloub (vector unsigned char a1, vector unsigned char a2) 235696263Sobrien{ 235796263Sobrien return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2); 235896263Sobrien} 235996263Sobrien 236096263Sobrien/* vec_nmsub */ 236196263Sobrien 236296263Sobrieninline vector float 236396263Sobrienvec_nmsub (vector float a1, vector float a2, vector float a3) 236496263Sobrien{ 236596263Sobrien return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3); 236696263Sobrien} 236796263Sobrien 236896263Sobrien/* vec_nor */ 236996263Sobrien 237096263Sobrieninline vector float 237196263Sobrienvec_nor (vector float a1, vector float a2) 237296263Sobrien{ 237396263Sobrien return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 237496263Sobrien} 237596263Sobrien 237696263Sobrieninline vector signed int 237796263Sobrienvec_nor (vector signed int a1, vector signed int a2) 237896263Sobrien{ 237996263Sobrien return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 238096263Sobrien} 238196263Sobrien 238296263Sobrieninline vector unsigned int 238396263Sobrienvec_nor (vector unsigned int a1, vector unsigned int a2) 238496263Sobrien{ 238596263Sobrien return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 238696263Sobrien} 238796263Sobrien 238896263Sobrieninline vector signed short 238996263Sobrienvec_nor (vector signed short a1, vector signed short a2) 239096263Sobrien{ 239196263Sobrien return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 239296263Sobrien} 239396263Sobrien 239496263Sobrieninline vector unsigned short 239596263Sobrienvec_nor (vector unsigned short a1, vector unsigned short a2) 239696263Sobrien{ 239796263Sobrien return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 239896263Sobrien} 239996263Sobrien 240096263Sobrieninline vector signed char 240196263Sobrienvec_nor (vector signed char a1, vector signed char a2) 240296263Sobrien{ 240396263Sobrien return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 240496263Sobrien} 240596263Sobrien 240696263Sobrieninline vector unsigned char 240796263Sobrienvec_nor (vector unsigned char a1, vector unsigned char a2) 240896263Sobrien{ 240996263Sobrien return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); 241096263Sobrien} 241196263Sobrien 241296263Sobrien/* vec_or */ 241396263Sobrien 241496263Sobrieninline vector float 241596263Sobrienvec_or (vector float a1, vector float a2) 241696263Sobrien{ 241796263Sobrien return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 241896263Sobrien} 241996263Sobrien 242096263Sobrieninline vector float 242196263Sobrienvec_or (vector float a1, vector signed int a2) 242296263Sobrien{ 242396263Sobrien return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 242496263Sobrien} 242596263Sobrien 242696263Sobrieninline vector float 242796263Sobrienvec_or (vector signed int a1, vector float a2) 242896263Sobrien{ 242996263Sobrien return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 243096263Sobrien} 243196263Sobrien 243296263Sobrieninline vector signed int 243396263Sobrienvec_or (vector signed int a1, vector signed int a2) 243496263Sobrien{ 243596263Sobrien return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 243696263Sobrien} 243796263Sobrien 243896263Sobrieninline vector unsigned int 243996263Sobrienvec_or (vector signed int a1, vector unsigned int a2) 244096263Sobrien{ 244196263Sobrien return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 244296263Sobrien} 244396263Sobrien 244496263Sobrieninline vector unsigned int 244596263Sobrienvec_or (vector unsigned int a1, vector signed int a2) 244696263Sobrien{ 244796263Sobrien return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 244896263Sobrien} 244996263Sobrien 245096263Sobrieninline vector unsigned int 245196263Sobrienvec_or (vector unsigned int a1, vector unsigned int a2) 245296263Sobrien{ 245396263Sobrien return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 245496263Sobrien} 245596263Sobrien 245696263Sobrieninline vector signed short 245796263Sobrienvec_or (vector signed short a1, vector signed short a2) 245896263Sobrien{ 245996263Sobrien return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 246096263Sobrien} 246196263Sobrien 246296263Sobrieninline vector unsigned short 246396263Sobrienvec_or (vector signed short a1, vector unsigned short a2) 246496263Sobrien{ 246596263Sobrien return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 246696263Sobrien} 246796263Sobrien 246896263Sobrieninline vector unsigned short 246996263Sobrienvec_or (vector unsigned short a1, vector signed short a2) 247096263Sobrien{ 247196263Sobrien return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 247296263Sobrien} 247396263Sobrien 247496263Sobrieninline vector unsigned short 247596263Sobrienvec_or (vector unsigned short a1, vector unsigned short a2) 247696263Sobrien{ 247796263Sobrien return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 247896263Sobrien} 247996263Sobrien 248096263Sobrieninline vector signed char 248196263Sobrienvec_or (vector signed char a1, vector signed char a2) 248296263Sobrien{ 248396263Sobrien return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 248496263Sobrien} 248596263Sobrien 248696263Sobrieninline vector unsigned char 248796263Sobrienvec_or (vector signed char a1, vector unsigned char a2) 248896263Sobrien{ 248996263Sobrien return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 249096263Sobrien} 249196263Sobrien 249296263Sobrieninline vector unsigned char 249396263Sobrienvec_or (vector unsigned char a1, vector signed char a2) 249496263Sobrien{ 249596263Sobrien return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 249696263Sobrien} 249796263Sobrien 249896263Sobrieninline vector unsigned char 249996263Sobrienvec_or (vector unsigned char a1, vector unsigned char a2) 250096263Sobrien{ 250196263Sobrien return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); 250296263Sobrien} 250396263Sobrien 250496263Sobrien/* vec_pack */ 250596263Sobrien 250696263Sobrieninline vector signed char 250796263Sobrienvec_pack (vector signed short a1, vector signed short a2) 250896263Sobrien{ 250996263Sobrien return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 251096263Sobrien} 251196263Sobrien 251296263Sobrieninline vector unsigned char 251396263Sobrienvec_pack (vector unsigned short a1, vector unsigned short a2) 251496263Sobrien{ 251596263Sobrien return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 251696263Sobrien} 251796263Sobrien 251896263Sobrieninline vector signed short 251996263Sobrienvec_pack (vector signed int a1, vector signed int a2) 252096263Sobrien{ 252196263Sobrien return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 252296263Sobrien} 252396263Sobrien 252496263Sobrieninline vector unsigned short 252596263Sobrienvec_pack (vector unsigned int a1, vector unsigned int a2) 252696263Sobrien{ 252796263Sobrien return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 252896263Sobrien} 252996263Sobrien 253096263Sobrien/* vec_vpkuwum */ 253196263Sobrien 253296263Sobrieninline vector signed short 253396263Sobrienvec_vpkuwum (vector signed int a1, vector signed int a2) 253496263Sobrien{ 253596263Sobrien return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 253696263Sobrien} 253796263Sobrien 253896263Sobrieninline vector unsigned short 253996263Sobrienvec_vpkuwum (vector unsigned int a1, vector unsigned int a2) 254096263Sobrien{ 254196263Sobrien return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); 254296263Sobrien} 254396263Sobrien 254496263Sobrien/* vec_vpkuhum */ 254596263Sobrien 254696263Sobrieninline vector signed char 254796263Sobrienvec_vpkuhum (vector signed short a1, vector signed short a2) 254896263Sobrien{ 254996263Sobrien return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 255096263Sobrien} 255196263Sobrien 255296263Sobrieninline vector unsigned char 255396263Sobrienvec_vpkuhum (vector unsigned short a1, vector unsigned short a2) 255496263Sobrien{ 255596263Sobrien return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); 255696263Sobrien} 255796263Sobrien 255896263Sobrien/* vec_packpx */ 255996263Sobrien 256096263Sobrieninline vector signed short 256196263Sobrienvec_packpx (vector unsigned int a1, vector unsigned int a2) 256296263Sobrien{ 256396263Sobrien return (vector signed short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2); 256496263Sobrien} 256596263Sobrien 256696263Sobrien/* vec_packs */ 256796263Sobrien 256896263Sobrieninline vector unsigned char 256996263Sobrienvec_packs (vector unsigned short a1, vector unsigned short a2) 257096263Sobrien{ 257196263Sobrien return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); 257296263Sobrien} 257396263Sobrien 257496263Sobrieninline vector signed char 257596263Sobrienvec_packs (vector signed short a1, vector signed short a2) 257696263Sobrien{ 257796263Sobrien return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2); 257896263Sobrien} 257996263Sobrien 258096263Sobrieninline vector unsigned short 258196263Sobrienvec_packs (vector unsigned int a1, vector unsigned int a2) 258296263Sobrien{ 258396263Sobrien return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); 258496263Sobrien} 258596263Sobrien 258696263Sobrieninline vector signed short 258796263Sobrienvec_packs (vector signed int a1, vector signed int a2) 258896263Sobrien{ 258996263Sobrien return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2); 259096263Sobrien} 259196263Sobrien 259296263Sobrien/* vec_vpkswss */ 259396263Sobrien 259496263Sobrieninline vector signed short 259596263Sobrienvec_vpkswss (vector signed int a1, vector signed int a2) 259696263Sobrien{ 259796263Sobrien return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2); 259896263Sobrien} 259996263Sobrien 260096263Sobrien/* vec_vpkuwus */ 260196263Sobrien 260296263Sobrieninline vector unsigned short 260396263Sobrienvec_vpkuwus (vector unsigned int a1, vector unsigned int a2) 260496263Sobrien{ 260596263Sobrien return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); 260696263Sobrien} 260796263Sobrien 260896263Sobrien/* vec_vpkshss */ 260996263Sobrien 261096263Sobrieninline vector signed char 261196263Sobrienvec_vpkshss (vector signed short a1, vector signed short a2) 261296263Sobrien{ 261396263Sobrien return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2); 261496263Sobrien} 261596263Sobrien 261696263Sobrien/* vec_vpkuhus */ 261796263Sobrien 261896263Sobrieninline vector unsigned char 261996263Sobrienvec_vpkuhus (vector unsigned short a1, vector unsigned short a2) 262096263Sobrien{ 262196263Sobrien return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); 262296263Sobrien} 262396263Sobrien 262496263Sobrien/* vec_packsu */ 262596263Sobrien 262696263Sobrieninline vector unsigned char 262796263Sobrienvec_packsu (vector unsigned short a1, vector unsigned short a2) 262896263Sobrien{ 262996263Sobrien return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); 263096263Sobrien} 263196263Sobrien 263296263Sobrieninline vector unsigned char 263396263Sobrienvec_packsu (vector signed short a1, vector signed short a2) 263496263Sobrien{ 263596263Sobrien return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2); 263696263Sobrien} 263796263Sobrien 263896263Sobrieninline vector unsigned short 263996263Sobrienvec_packsu (vector unsigned int a1, vector unsigned int a2) 264096263Sobrien{ 264196263Sobrien return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); 264296263Sobrien} 264396263Sobrien 264496263Sobrieninline vector unsigned short 264596263Sobrienvec_packsu (vector signed int a1, vector signed int a2) 264696263Sobrien{ 264796263Sobrien return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2); 264896263Sobrien} 264996263Sobrien 265096263Sobrien/* vec_vpkswus */ 265196263Sobrien 265296263Sobrieninline vector unsigned short 265396263Sobrienvec_vpkswus (vector signed int a1, vector signed int a2) 265496263Sobrien{ 265596263Sobrien return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2); 265696263Sobrien} 265796263Sobrien 265896263Sobrien/* vec_vpkshus */ 265996263Sobrien 266096263Sobrieninline vector unsigned char 266196263Sobrienvec_vpkshus (vector signed short a1, vector signed short a2) 266296263Sobrien{ 266396263Sobrien return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2); 266496263Sobrien} 266596263Sobrien 266696263Sobrien/* vec_perm */ 266796263Sobrien 266896263Sobrieninline vector float 266996263Sobrienvec_perm (vector float a1, vector float a2, vector unsigned char a3) 267096263Sobrien{ 267196263Sobrien return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 267296263Sobrien} 267396263Sobrien 267496263Sobrieninline vector signed int 267596263Sobrienvec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3) 267696263Sobrien{ 267796263Sobrien return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 267896263Sobrien} 267996263Sobrien 268096263Sobrieninline vector unsigned int 268196263Sobrienvec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3) 268296263Sobrien{ 268396263Sobrien return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 268496263Sobrien} 268596263Sobrien 268696263Sobrieninline vector signed short 268796263Sobrienvec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3) 268896263Sobrien{ 268996263Sobrien return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 269096263Sobrien} 269196263Sobrien 269296263Sobrieninline vector unsigned short 269396263Sobrienvec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3) 269496263Sobrien{ 269596263Sobrien return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 269696263Sobrien} 269796263Sobrien 269896263Sobrieninline vector signed char 269996263Sobrienvec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3) 270096263Sobrien{ 270196263Sobrien return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 270296263Sobrien} 270396263Sobrien 270496263Sobrieninline vector unsigned char 270596263Sobrienvec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3) 270696263Sobrien{ 270796263Sobrien return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); 270896263Sobrien} 270996263Sobrien 271096263Sobrien/* vec_re */ 271196263Sobrien 271296263Sobrieninline vector float 271396263Sobrienvec_re (vector float a1) 271496263Sobrien{ 271596263Sobrien return (vector float) __builtin_altivec_vrefp ((vector float) a1); 271696263Sobrien} 271796263Sobrien 271896263Sobrien/* vec_rl */ 271996263Sobrien 272096263Sobrieninline vector signed char 272196263Sobrienvec_rl (vector signed char a1, vector unsigned char a2) 272296263Sobrien{ 272396263Sobrien return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 272496263Sobrien} 272596263Sobrien 272696263Sobrieninline vector unsigned char 272796263Sobrienvec_rl (vector unsigned char a1, vector unsigned char a2) 272896263Sobrien{ 272996263Sobrien return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 273096263Sobrien} 273196263Sobrien 273296263Sobrieninline vector signed short 273396263Sobrienvec_rl (vector signed short a1, vector unsigned short a2) 273496263Sobrien{ 273596263Sobrien return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 273696263Sobrien} 273796263Sobrien 273896263Sobrieninline vector unsigned short 273996263Sobrienvec_rl (vector unsigned short a1, vector unsigned short a2) 274096263Sobrien{ 274196263Sobrien return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 274296263Sobrien} 274396263Sobrien 274496263Sobrieninline vector signed int 274596263Sobrienvec_rl (vector signed int a1, vector unsigned int a2) 274696263Sobrien{ 274796263Sobrien return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 274896263Sobrien} 274996263Sobrien 275096263Sobrieninline vector unsigned int 275196263Sobrienvec_rl (vector unsigned int a1, vector unsigned int a2) 275296263Sobrien{ 275396263Sobrien return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 275496263Sobrien} 275596263Sobrien 275696263Sobrien/* vec_vrlw */ 275796263Sobrien 275896263Sobrieninline vector signed int 275996263Sobrienvec_vrlw (vector signed int a1, vector unsigned int a2) 276096263Sobrien{ 276196263Sobrien return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 276296263Sobrien} 276396263Sobrien 276496263Sobrieninline vector unsigned int 276596263Sobrienvec_vrlw (vector unsigned int a1, vector unsigned int a2) 276696263Sobrien{ 276796263Sobrien return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); 276896263Sobrien} 276996263Sobrien 277096263Sobrien/* vec_vrlh */ 277196263Sobrien 277296263Sobrieninline vector signed short 277396263Sobrienvec_vrlh (vector signed short a1, vector unsigned short a2) 277496263Sobrien{ 277596263Sobrien return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 277696263Sobrien} 277796263Sobrien 277896263Sobrieninline vector unsigned short 277996263Sobrienvec_vrlh (vector unsigned short a1, vector unsigned short a2) 278096263Sobrien{ 278196263Sobrien return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); 278296263Sobrien} 278396263Sobrien 278496263Sobrien/* vec_vrlb */ 278596263Sobrien 278696263Sobrieninline vector signed char 278796263Sobrienvec_vrlb (vector signed char a1, vector unsigned char a2) 278896263Sobrien{ 278996263Sobrien return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 279096263Sobrien} 279196263Sobrien 279296263Sobrieninline vector unsigned char 279396263Sobrienvec_vrlb (vector unsigned char a1, vector unsigned char a2) 279496263Sobrien{ 279596263Sobrien return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); 279696263Sobrien} 279796263Sobrien 279896263Sobrien/* vec_round */ 279996263Sobrien 280096263Sobrieninline vector float 280196263Sobrienvec_round (vector float a1) 280296263Sobrien{ 280396263Sobrien return (vector float) __builtin_altivec_vrfin ((vector float) a1); 280496263Sobrien} 280596263Sobrien 280696263Sobrien/* vec_rsqrte */ 280796263Sobrien 280896263Sobrieninline vector float 280996263Sobrienvec_rsqrte (vector float a1) 281096263Sobrien{ 281196263Sobrien return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1); 281296263Sobrien} 281396263Sobrien 281496263Sobrien/* vec_sel */ 281596263Sobrien 281696263Sobrieninline vector float 281796263Sobrienvec_sel (vector float a1, vector float a2, vector signed int a3) 281896263Sobrien{ 281996263Sobrien return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 282096263Sobrien} 282196263Sobrien 282296263Sobrieninline vector float 282396263Sobrienvec_sel (vector float a1, vector float a2, vector unsigned int a3) 282496263Sobrien{ 282596263Sobrien return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 282696263Sobrien} 282796263Sobrien 282896263Sobrieninline vector signed int 282996263Sobrienvec_sel (vector signed int a1, vector signed int a2, vector signed int a3) 283096263Sobrien{ 283196263Sobrien return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 283296263Sobrien} 283396263Sobrien 283496263Sobrieninline vector signed int 283596263Sobrienvec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3) 283696263Sobrien{ 283796263Sobrien return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 283896263Sobrien} 283996263Sobrien 284096263Sobrieninline vector unsigned int 284196263Sobrienvec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3) 284296263Sobrien{ 284396263Sobrien return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 284496263Sobrien} 284596263Sobrien 284696263Sobrieninline vector unsigned int 284796263Sobrienvec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3) 284896263Sobrien{ 284996263Sobrien return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 285096263Sobrien} 285196263Sobrien 285296263Sobrieninline vector signed short 285396263Sobrienvec_sel (vector signed short a1, vector signed short a2, vector signed short a3) 285496263Sobrien{ 285596263Sobrien return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 285696263Sobrien} 285796263Sobrien 285896263Sobrieninline vector signed short 285996263Sobrienvec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3) 286096263Sobrien{ 286196263Sobrien return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 286296263Sobrien} 286396263Sobrien 286496263Sobrieninline vector unsigned short 286596263Sobrienvec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3) 286696263Sobrien{ 286796263Sobrien return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 286896263Sobrien} 286996263Sobrien 287096263Sobrieninline vector unsigned short 287196263Sobrienvec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3) 287296263Sobrien{ 287396263Sobrien return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 287496263Sobrien} 287596263Sobrien 287696263Sobrieninline vector signed char 287796263Sobrienvec_sel (vector signed char a1, vector signed char a2, vector signed char a3) 287896263Sobrien{ 287996263Sobrien return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 288096263Sobrien} 288196263Sobrien 288296263Sobrieninline vector signed char 288396263Sobrienvec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3) 288496263Sobrien{ 288596263Sobrien return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 288696263Sobrien} 288796263Sobrien 288896263Sobrieninline vector unsigned char 288996263Sobrienvec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3) 289096263Sobrien{ 289196263Sobrien return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 289296263Sobrien} 289396263Sobrien 289496263Sobrieninline vector unsigned char 289596263Sobrienvec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3) 289696263Sobrien{ 289796263Sobrien return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); 289896263Sobrien} 289996263Sobrien 290096263Sobrien/* vec_sl */ 290196263Sobrien 290296263Sobrieninline vector signed char 290396263Sobrienvec_sl (vector signed char a1, vector unsigned char a2) 290496263Sobrien{ 290596263Sobrien return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 290696263Sobrien} 290796263Sobrien 290896263Sobrieninline vector unsigned char 290996263Sobrienvec_sl (vector unsigned char a1, vector unsigned char a2) 291096263Sobrien{ 291196263Sobrien return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 291296263Sobrien} 291396263Sobrien 291496263Sobrieninline vector signed short 291596263Sobrienvec_sl (vector signed short a1, vector unsigned short a2) 291696263Sobrien{ 291796263Sobrien return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 291896263Sobrien} 291996263Sobrien 292096263Sobrieninline vector unsigned short 292196263Sobrienvec_sl (vector unsigned short a1, vector unsigned short a2) 292296263Sobrien{ 292396263Sobrien return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 292496263Sobrien} 292596263Sobrien 292696263Sobrieninline vector signed int 292796263Sobrienvec_sl (vector signed int a1, vector unsigned int a2) 292896263Sobrien{ 292996263Sobrien return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 293096263Sobrien} 293196263Sobrien 293296263Sobrieninline vector unsigned int 293396263Sobrienvec_sl (vector unsigned int a1, vector unsigned int a2) 293496263Sobrien{ 293596263Sobrien return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 293696263Sobrien} 293796263Sobrien 293896263Sobrien/* vec_vslw */ 293996263Sobrien 294096263Sobrieninline vector signed int 294196263Sobrienvec_vslw (vector signed int a1, vector unsigned int a2) 294296263Sobrien{ 294396263Sobrien return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 294496263Sobrien} 294596263Sobrien 294696263Sobrieninline vector unsigned int 294796263Sobrienvec_vslw (vector unsigned int a1, vector unsigned int a2) 294896263Sobrien{ 294996263Sobrien return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); 295096263Sobrien} 295196263Sobrien 295296263Sobrien/* vec_vslh */ 295396263Sobrien 295496263Sobrieninline vector signed short 295596263Sobrienvec_vslh (vector signed short a1, vector unsigned short a2) 295696263Sobrien{ 295796263Sobrien return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 295896263Sobrien} 295996263Sobrien 296096263Sobrieninline vector unsigned short 296196263Sobrienvec_vslh (vector unsigned short a1, vector unsigned short a2) 296296263Sobrien{ 296396263Sobrien return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); 296496263Sobrien} 296596263Sobrien 296696263Sobrien/* vec_vslb */ 296796263Sobrien 296896263Sobrieninline vector signed char 296996263Sobrienvec_vslb (vector signed char a1, vector unsigned char a2) 297096263Sobrien{ 297196263Sobrien return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 297296263Sobrien} 297396263Sobrien 297496263Sobrieninline vector unsigned char 297596263Sobrienvec_vslb (vector unsigned char a1, vector unsigned char a2) 297696263Sobrien{ 297796263Sobrien return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); 297896263Sobrien} 297996263Sobrien 298096263Sobrien/* vec_sld */ 298196263Sobrien 298296263Sobrieninline vector float 298396263Sobrienvec_sld (vector float a1, vector float a2, const char a3) 298496263Sobrien{ 298596263Sobrien return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 298696263Sobrien} 298796263Sobrien 298896263Sobrieninline vector signed int 298996263Sobrienvec_sld (vector signed int a1, vector signed int a2, const char a3) 299096263Sobrien{ 299196263Sobrien return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 299296263Sobrien} 299396263Sobrien 299496263Sobrieninline vector unsigned int 299596263Sobrienvec_sld (vector unsigned int a1, vector unsigned int a2, const char a3) 299696263Sobrien{ 299796263Sobrien return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 299896263Sobrien} 299996263Sobrien 300096263Sobrieninline vector signed short 300196263Sobrienvec_sld (vector signed short a1, vector signed short a2, const char a3) 300296263Sobrien{ 300396263Sobrien return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 300496263Sobrien} 300596263Sobrien 300696263Sobrieninline vector unsigned short 300796263Sobrienvec_sld (vector unsigned short a1, vector unsigned short a2, const char a3) 300896263Sobrien{ 300996263Sobrien return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 301096263Sobrien} 301196263Sobrien 301296263Sobrieninline vector signed char 301396263Sobrienvec_sld (vector signed char a1, vector signed char a2, const char a3) 301496263Sobrien{ 301596263Sobrien return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 301696263Sobrien} 301796263Sobrien 301896263Sobrieninline vector unsigned char 301996263Sobrienvec_sld (vector unsigned char a1, vector unsigned char a2, const char a3) 302096263Sobrien{ 302196263Sobrien return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); 302296263Sobrien} 302396263Sobrien 302496263Sobrien/* vec_sll */ 302596263Sobrien 302696263Sobrieninline vector signed int 302796263Sobrienvec_sll (vector signed int a1, vector unsigned int a2) 302896263Sobrien{ 302996263Sobrien return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 303096263Sobrien} 303196263Sobrien 303296263Sobrieninline vector signed int 303396263Sobrienvec_sll (vector signed int a1, vector unsigned short a2) 303496263Sobrien{ 303596263Sobrien return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 303696263Sobrien} 303796263Sobrien 303896263Sobrieninline vector signed int 303996263Sobrienvec_sll (vector signed int a1, vector unsigned char a2) 304096263Sobrien{ 304196263Sobrien return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 304296263Sobrien} 304396263Sobrien 304496263Sobrieninline vector unsigned int 304596263Sobrienvec_sll (vector unsigned int a1, vector unsigned int a2) 304696263Sobrien{ 304796263Sobrien return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 304896263Sobrien} 304996263Sobrien 305096263Sobrieninline vector unsigned int 305196263Sobrienvec_sll (vector unsigned int a1, vector unsigned short a2) 305296263Sobrien{ 305396263Sobrien return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 305496263Sobrien} 305596263Sobrien 305696263Sobrieninline vector unsigned int 305796263Sobrienvec_sll (vector unsigned int a1, vector unsigned char a2) 305896263Sobrien{ 305996263Sobrien return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 306096263Sobrien} 306196263Sobrien 306296263Sobrieninline vector signed short 306396263Sobrienvec_sll (vector signed short a1, vector unsigned int a2) 306496263Sobrien{ 306596263Sobrien return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 306696263Sobrien} 306796263Sobrien 306896263Sobrieninline vector signed short 306996263Sobrienvec_sll (vector signed short a1, vector unsigned short a2) 307096263Sobrien{ 307196263Sobrien return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 307296263Sobrien} 307396263Sobrien 307496263Sobrieninline vector signed short 307596263Sobrienvec_sll (vector signed short a1, vector unsigned char a2) 307696263Sobrien{ 307796263Sobrien return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 307896263Sobrien} 307996263Sobrien 308096263Sobrieninline vector unsigned short 308196263Sobrienvec_sll (vector unsigned short a1, vector unsigned int a2) 308296263Sobrien{ 308396263Sobrien return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 308496263Sobrien} 308596263Sobrien 308696263Sobrieninline vector unsigned short 308796263Sobrienvec_sll (vector unsigned short a1, vector unsigned short a2) 308896263Sobrien{ 308996263Sobrien return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 309096263Sobrien} 309196263Sobrien 309296263Sobrieninline vector unsigned short 309396263Sobrienvec_sll (vector unsigned short a1, vector unsigned char a2) 309496263Sobrien{ 309596263Sobrien return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 309696263Sobrien} 309796263Sobrien 309896263Sobrieninline vector signed char 309996263Sobrienvec_sll (vector signed char a1, vector unsigned int a2) 310096263Sobrien{ 310196263Sobrien return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 310296263Sobrien} 310396263Sobrien 310496263Sobrieninline vector signed char 310596263Sobrienvec_sll (vector signed char a1, vector unsigned short a2) 310696263Sobrien{ 310796263Sobrien return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 310896263Sobrien} 310996263Sobrien 311096263Sobrieninline vector signed char 311196263Sobrienvec_sll (vector signed char a1, vector unsigned char a2) 311296263Sobrien{ 311396263Sobrien return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 311496263Sobrien} 311596263Sobrien 311696263Sobrieninline vector unsigned char 311796263Sobrienvec_sll (vector unsigned char a1, vector unsigned int a2) 311896263Sobrien{ 311996263Sobrien return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 312096263Sobrien} 312196263Sobrien 312296263Sobrieninline vector unsigned char 312396263Sobrienvec_sll (vector unsigned char a1, vector unsigned short a2) 312496263Sobrien{ 312596263Sobrien return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 312696263Sobrien} 312796263Sobrien 312896263Sobrieninline vector unsigned char 312996263Sobrienvec_sll (vector unsigned char a1, vector unsigned char a2) 313096263Sobrien{ 313196263Sobrien return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); 313296263Sobrien} 313396263Sobrien 313496263Sobrien/* vec_slo */ 313596263Sobrien 313696263Sobrieninline vector float 313796263Sobrienvec_slo (vector float a1, vector signed char a2) 313896263Sobrien{ 313996263Sobrien return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 314096263Sobrien} 314196263Sobrien 314296263Sobrieninline vector float 314396263Sobrienvec_slo (vector float a1, vector unsigned char a2) 314496263Sobrien{ 314596263Sobrien return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 314696263Sobrien} 314796263Sobrien 314896263Sobrieninline vector signed int 314996263Sobrienvec_slo (vector signed int a1, vector signed char a2) 315096263Sobrien{ 315196263Sobrien return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 315296263Sobrien} 315396263Sobrien 315496263Sobrieninline vector signed int 315596263Sobrienvec_slo (vector signed int a1, vector unsigned char a2) 315696263Sobrien{ 315796263Sobrien return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 315896263Sobrien} 315996263Sobrien 316096263Sobrieninline vector unsigned int 316196263Sobrienvec_slo (vector unsigned int a1, vector signed char a2) 316296263Sobrien{ 316396263Sobrien return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 316496263Sobrien} 316596263Sobrien 316696263Sobrieninline vector unsigned int 316796263Sobrienvec_slo (vector unsigned int a1, vector unsigned char a2) 316896263Sobrien{ 316996263Sobrien return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 317096263Sobrien} 317196263Sobrien 317296263Sobrieninline vector signed short 317396263Sobrienvec_slo (vector signed short a1, vector signed char a2) 317496263Sobrien{ 317596263Sobrien return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 317696263Sobrien} 317796263Sobrien 317896263Sobrieninline vector signed short 317996263Sobrienvec_slo (vector signed short a1, vector unsigned char a2) 318096263Sobrien{ 318196263Sobrien return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 318296263Sobrien} 318396263Sobrien 318496263Sobrieninline vector unsigned short 318596263Sobrienvec_slo (vector unsigned short a1, vector signed char a2) 318696263Sobrien{ 318796263Sobrien return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 318896263Sobrien} 318996263Sobrien 319096263Sobrieninline vector unsigned short 319196263Sobrienvec_slo (vector unsigned short a1, vector unsigned char a2) 319296263Sobrien{ 319396263Sobrien return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 319496263Sobrien} 319596263Sobrien 319696263Sobrieninline vector signed char 319796263Sobrienvec_slo (vector signed char a1, vector signed char a2) 319896263Sobrien{ 319996263Sobrien return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 320096263Sobrien} 320196263Sobrien 320296263Sobrieninline vector signed char 320396263Sobrienvec_slo (vector signed char a1, vector unsigned char a2) 320496263Sobrien{ 320596263Sobrien return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 320696263Sobrien} 320796263Sobrien 320896263Sobrieninline vector unsigned char 320996263Sobrienvec_slo (vector unsigned char a1, vector signed char a2) 321096263Sobrien{ 321196263Sobrien return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 321296263Sobrien} 321396263Sobrien 321496263Sobrieninline vector unsigned char 321596263Sobrienvec_slo (vector unsigned char a1, vector unsigned char a2) 321696263Sobrien{ 321796263Sobrien return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); 321896263Sobrien} 321996263Sobrien 322096263Sobrien/* vec_splat */ 322196263Sobrien 322296263Sobrieninline vector signed char 322396263Sobrienvec_splat (vector signed char a1, const char a2) 322496263Sobrien{ 322596263Sobrien return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 322696263Sobrien} 322796263Sobrien 322896263Sobrieninline vector unsigned char 322996263Sobrienvec_splat (vector unsigned char a1, const char a2) 323096263Sobrien{ 323196263Sobrien return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 323296263Sobrien} 323396263Sobrien 323496263Sobrieninline vector signed short 323596263Sobrienvec_splat (vector signed short a1, const char a2) 323696263Sobrien{ 323796263Sobrien return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 323896263Sobrien} 323996263Sobrien 324096263Sobrieninline vector unsigned short 324196263Sobrienvec_splat (vector unsigned short a1, const char a2) 324296263Sobrien{ 324396263Sobrien return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 324496263Sobrien} 324596263Sobrien 324696263Sobrieninline vector float 324796263Sobrienvec_splat (vector float a1, const char a2) 324896263Sobrien{ 324996263Sobrien return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); 325096263Sobrien} 325196263Sobrien 325296263Sobrieninline vector signed int 325396263Sobrienvec_splat (vector signed int a1, const char a2) 325496263Sobrien{ 325596263Sobrien return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 325696263Sobrien} 325796263Sobrien 325896263Sobrieninline vector unsigned int 325996263Sobrienvec_splat (vector unsigned int a1, const char a2) 326096263Sobrien{ 326196263Sobrien return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 326296263Sobrien} 326396263Sobrien 326496263Sobrien/* vec_vspltw */ 326596263Sobrien 326696263Sobrieninline vector float 326796263Sobrienvec_vspltw (vector float a1, const char a2) 326896263Sobrien{ 326996263Sobrien return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); 327096263Sobrien} 327196263Sobrien 327296263Sobrieninline vector signed int 327396263Sobrienvec_vspltw (vector signed int a1, const char a2) 327496263Sobrien{ 327596263Sobrien return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 327696263Sobrien} 327796263Sobrien 327896263Sobrieninline vector unsigned int 327996263Sobrienvec_vspltw (vector unsigned int a1, const char a2) 328096263Sobrien{ 328196263Sobrien return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2); 328296263Sobrien} 328396263Sobrien 328496263Sobrien/* vec_vsplth */ 328596263Sobrien 328696263Sobrieninline vector signed short 328796263Sobrienvec_vsplth (vector signed short a1, const char a2) 328896263Sobrien{ 328996263Sobrien return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 329096263Sobrien} 329196263Sobrien 329296263Sobrieninline vector unsigned short 329396263Sobrienvec_vsplth (vector unsigned short a1, const char a2) 329496263Sobrien{ 329596263Sobrien return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); 329696263Sobrien} 329796263Sobrien 329896263Sobrien/* vec_vspltb */ 329996263Sobrien 330096263Sobrieninline vector signed char 330196263Sobrienvec_vspltb (vector signed char a1, const char a2) 330296263Sobrien{ 330396263Sobrien return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 330496263Sobrien} 330596263Sobrien 330696263Sobrieninline vector unsigned char 330796263Sobrienvec_vspltb (vector unsigned char a1, const char a2) 330896263Sobrien{ 330996263Sobrien return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2); 331096263Sobrien} 331196263Sobrien 331296263Sobrien/* vec_splat_s8 */ 331396263Sobrien 331496263Sobrieninline vector signed char 331596263Sobrienvec_splat_s8 (const char a1) 331696263Sobrien{ 331796263Sobrien return (vector signed char) __builtin_altivec_vspltisb (a1); 331896263Sobrien} 331996263Sobrien 332096263Sobrien/* vec_splat_s16 */ 332196263Sobrien 332296263Sobrieninline vector signed short 332396263Sobrienvec_splat_s16 (const char a1) 332496263Sobrien{ 332596263Sobrien return (vector signed short) __builtin_altivec_vspltish (a1); 332696263Sobrien} 332796263Sobrien 332896263Sobrien/* vec_splat_s32 */ 332996263Sobrien 333096263Sobrieninline vector signed int 333196263Sobrienvec_splat_s32 (const char a1) 333296263Sobrien{ 333396263Sobrien return (vector signed int) __builtin_altivec_vspltisw (a1); 333496263Sobrien} 333596263Sobrien 333696263Sobrien/* vec_splat_u8 */ 333796263Sobrien 333896263Sobrieninline vector unsigned char 333996263Sobrienvec_splat_u8 (const char a1) 334096263Sobrien{ 334196263Sobrien return (vector unsigned char) __builtin_altivec_vspltisb (a1); 334296263Sobrien} 334396263Sobrien 334496263Sobrien/* vec_splat_u16 */ 334596263Sobrien 334696263Sobrieninline vector unsigned short 334796263Sobrienvec_splat_u16 (const char a1) 334896263Sobrien{ 334996263Sobrien return (vector unsigned short) __builtin_altivec_vspltish (a1); 335096263Sobrien} 335196263Sobrien 335296263Sobrien/* vec_splat_u32 */ 335396263Sobrien 335496263Sobrieninline vector unsigned int 335596263Sobrienvec_splat_u32 (const char a1) 335696263Sobrien{ 335796263Sobrien return (vector unsigned int) __builtin_altivec_vspltisw (a1); 335896263Sobrien} 335996263Sobrien 336096263Sobrien/* vec_sr */ 336196263Sobrien 336296263Sobrieninline vector signed char 336396263Sobrienvec_sr (vector signed char a1, vector unsigned char a2) 336496263Sobrien{ 336596263Sobrien return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 336696263Sobrien} 336796263Sobrien 336896263Sobrieninline vector unsigned char 336996263Sobrienvec_sr (vector unsigned char a1, vector unsigned char a2) 337096263Sobrien{ 337196263Sobrien return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 337296263Sobrien} 337396263Sobrien 337496263Sobrieninline vector signed short 337596263Sobrienvec_sr (vector signed short a1, vector unsigned short a2) 337696263Sobrien{ 337796263Sobrien return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 337896263Sobrien} 337996263Sobrien 338096263Sobrieninline vector unsigned short 338196263Sobrienvec_sr (vector unsigned short a1, vector unsigned short a2) 338296263Sobrien{ 338396263Sobrien return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 338496263Sobrien} 338596263Sobrien 338696263Sobrieninline vector signed int 338796263Sobrienvec_sr (vector signed int a1, vector unsigned int a2) 338896263Sobrien{ 338996263Sobrien return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 339096263Sobrien} 339196263Sobrien 339296263Sobrieninline vector unsigned int 339396263Sobrienvec_sr (vector unsigned int a1, vector unsigned int a2) 339496263Sobrien{ 339596263Sobrien return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 339696263Sobrien} 339796263Sobrien 339896263Sobrien/* vec_vsrw */ 339996263Sobrien 340096263Sobrieninline vector signed int 340196263Sobrienvec_vsrw (vector signed int a1, vector unsigned int a2) 340296263Sobrien{ 340396263Sobrien return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 340496263Sobrien} 340596263Sobrien 340696263Sobrieninline vector unsigned int 340796263Sobrienvec_vsrw (vector unsigned int a1, vector unsigned int a2) 340896263Sobrien{ 340996263Sobrien return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); 341096263Sobrien} 341196263Sobrien 341296263Sobrien/* vec_vsrh */ 341396263Sobrien 341496263Sobrieninline vector signed short 341596263Sobrienvec_vsrh (vector signed short a1, vector unsigned short a2) 341696263Sobrien{ 341796263Sobrien return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 341896263Sobrien} 341996263Sobrien 342096263Sobrieninline vector unsigned short 342196263Sobrienvec_vsrh (vector unsigned short a1, vector unsigned short a2) 342296263Sobrien{ 342396263Sobrien return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); 342496263Sobrien} 342596263Sobrien 342696263Sobrien/* vec_vsrb */ 342796263Sobrien 342896263Sobrieninline vector signed char 342996263Sobrienvec_vsrb (vector signed char a1, vector unsigned char a2) 343096263Sobrien{ 343196263Sobrien return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 343296263Sobrien} 343396263Sobrien 343496263Sobrieninline vector unsigned char 343596263Sobrienvec_vsrb (vector unsigned char a1, vector unsigned char a2) 343696263Sobrien{ 343796263Sobrien return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); 343896263Sobrien} 343996263Sobrien 344096263Sobrien/* vec_sra */ 344196263Sobrien 344296263Sobrieninline vector signed char 344396263Sobrienvec_sra (vector signed char a1, vector unsigned char a2) 344496263Sobrien{ 344596263Sobrien return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 344696263Sobrien} 344796263Sobrien 344896263Sobrieninline vector unsigned char 344996263Sobrienvec_sra (vector unsigned char a1, vector unsigned char a2) 345096263Sobrien{ 345196263Sobrien return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 345296263Sobrien} 345396263Sobrien 345496263Sobrieninline vector signed short 345596263Sobrienvec_sra (vector signed short a1, vector unsigned short a2) 345696263Sobrien{ 345796263Sobrien return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 345896263Sobrien} 345996263Sobrien 346096263Sobrieninline vector unsigned short 346196263Sobrienvec_sra (vector unsigned short a1, vector unsigned short a2) 346296263Sobrien{ 346396263Sobrien return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 346496263Sobrien} 346596263Sobrien 346696263Sobrieninline vector signed int 346796263Sobrienvec_sra (vector signed int a1, vector unsigned int a2) 346896263Sobrien{ 346996263Sobrien return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 347096263Sobrien} 347196263Sobrien 347296263Sobrieninline vector unsigned int 347396263Sobrienvec_sra (vector unsigned int a1, vector unsigned int a2) 347496263Sobrien{ 347596263Sobrien return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 347696263Sobrien} 347796263Sobrien 347896263Sobrien/* vec_vsraw */ 347996263Sobrien 348096263Sobrieninline vector signed int 348196263Sobrienvec_vsraw (vector signed int a1, vector unsigned int a2) 348296263Sobrien{ 348396263Sobrien return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 348496263Sobrien} 348596263Sobrien 348696263Sobrieninline vector unsigned int 348796263Sobrienvec_vsraw (vector unsigned int a1, vector unsigned int a2) 348896263Sobrien{ 348996263Sobrien return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); 349096263Sobrien} 349196263Sobrien 349296263Sobrien/* vec_vsrah */ 349396263Sobrien 349496263Sobrieninline vector signed short 349596263Sobrienvec_vsrah (vector signed short a1, vector unsigned short a2) 349696263Sobrien{ 349796263Sobrien return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 349896263Sobrien} 349996263Sobrien 350096263Sobrieninline vector unsigned short 350196263Sobrienvec_vsrah (vector unsigned short a1, vector unsigned short a2) 350296263Sobrien{ 350396263Sobrien return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); 350496263Sobrien} 350596263Sobrien 350696263Sobrien/* vec_vsrab */ 350796263Sobrien 350896263Sobrieninline vector signed char 350996263Sobrienvec_vsrab (vector signed char a1, vector unsigned char a2) 351096263Sobrien{ 351196263Sobrien return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 351296263Sobrien} 351396263Sobrien 351496263Sobrieninline vector unsigned char 351596263Sobrienvec_vsrab (vector unsigned char a1, vector unsigned char a2) 351696263Sobrien{ 351796263Sobrien return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); 351896263Sobrien} 351996263Sobrien 352096263Sobrien/* vec_srl */ 352196263Sobrien 352296263Sobrieninline vector signed int 352396263Sobrienvec_srl (vector signed int a1, vector unsigned int a2) 352496263Sobrien{ 352596263Sobrien return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 352696263Sobrien} 352796263Sobrien 352896263Sobrieninline vector signed int 352996263Sobrienvec_srl (vector signed int a1, vector unsigned short a2) 353096263Sobrien{ 353196263Sobrien return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 353296263Sobrien} 353396263Sobrien 353496263Sobrieninline vector signed int 353596263Sobrienvec_srl (vector signed int a1, vector unsigned char a2) 353696263Sobrien{ 353796263Sobrien return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 353896263Sobrien} 353996263Sobrien 354096263Sobrieninline vector unsigned int 354196263Sobrienvec_srl (vector unsigned int a1, vector unsigned int a2) 354296263Sobrien{ 354396263Sobrien return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 354496263Sobrien} 354596263Sobrien 354696263Sobrieninline vector unsigned int 354796263Sobrienvec_srl (vector unsigned int a1, vector unsigned short a2) 354896263Sobrien{ 354996263Sobrien return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 355096263Sobrien} 355196263Sobrien 355296263Sobrieninline vector unsigned int 355396263Sobrienvec_srl (vector unsigned int a1, vector unsigned char a2) 355496263Sobrien{ 355596263Sobrien return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 355696263Sobrien} 355796263Sobrien 355896263Sobrieninline vector signed short 355996263Sobrienvec_srl (vector signed short a1, vector unsigned int a2) 356096263Sobrien{ 356196263Sobrien return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 356296263Sobrien} 356396263Sobrien 356496263Sobrieninline vector signed short 356596263Sobrienvec_srl (vector signed short a1, vector unsigned short a2) 356696263Sobrien{ 356796263Sobrien return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 356896263Sobrien} 356996263Sobrien 357096263Sobrieninline vector signed short 357196263Sobrienvec_srl (vector signed short a1, vector unsigned char a2) 357296263Sobrien{ 357396263Sobrien return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 357496263Sobrien} 357596263Sobrien 357696263Sobrieninline vector unsigned short 357796263Sobrienvec_srl (vector unsigned short a1, vector unsigned int a2) 357896263Sobrien{ 357996263Sobrien return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 358096263Sobrien} 358196263Sobrien 358296263Sobrieninline vector unsigned short 358396263Sobrienvec_srl (vector unsigned short a1, vector unsigned short a2) 358496263Sobrien{ 358596263Sobrien return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 358696263Sobrien} 358796263Sobrien 358896263Sobrieninline vector unsigned short 358996263Sobrienvec_srl (vector unsigned short a1, vector unsigned char a2) 359096263Sobrien{ 359196263Sobrien return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 359296263Sobrien} 359396263Sobrien 359496263Sobrieninline vector signed char 359596263Sobrienvec_srl (vector signed char a1, vector unsigned int a2) 359696263Sobrien{ 359796263Sobrien return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 359896263Sobrien} 359996263Sobrien 360096263Sobrieninline vector signed char 360196263Sobrienvec_srl (vector signed char a1, vector unsigned short a2) 360296263Sobrien{ 360396263Sobrien return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 360496263Sobrien} 360596263Sobrien 360696263Sobrieninline vector signed char 360796263Sobrienvec_srl (vector signed char a1, vector unsigned char a2) 360896263Sobrien{ 360996263Sobrien return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 361096263Sobrien} 361196263Sobrien 361296263Sobrieninline vector unsigned char 361396263Sobrienvec_srl (vector unsigned char a1, vector unsigned int a2) 361496263Sobrien{ 361596263Sobrien return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 361696263Sobrien} 361796263Sobrien 361896263Sobrieninline vector unsigned char 361996263Sobrienvec_srl (vector unsigned char a1, vector unsigned short a2) 362096263Sobrien{ 362196263Sobrien return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 362296263Sobrien} 362396263Sobrien 362496263Sobrieninline vector unsigned char 362596263Sobrienvec_srl (vector unsigned char a1, vector unsigned char a2) 362696263Sobrien{ 362796263Sobrien return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); 362896263Sobrien} 362996263Sobrien 363096263Sobrien/* vec_sro */ 363196263Sobrien 363296263Sobrieninline vector float 363396263Sobrienvec_sro (vector float a1, vector signed char a2) 363496263Sobrien{ 363596263Sobrien return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 363696263Sobrien} 363796263Sobrien 363896263Sobrieninline vector float 363996263Sobrienvec_sro (vector float a1, vector unsigned char a2) 364096263Sobrien{ 364196263Sobrien return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 364296263Sobrien} 364396263Sobrien 364496263Sobrieninline vector signed int 364596263Sobrienvec_sro (vector signed int a1, vector signed char a2) 364696263Sobrien{ 364796263Sobrien return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 364896263Sobrien} 364996263Sobrien 365096263Sobrieninline vector signed int 365196263Sobrienvec_sro (vector signed int a1, vector unsigned char a2) 365296263Sobrien{ 365396263Sobrien return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 365496263Sobrien} 365596263Sobrien 365696263Sobrieninline vector unsigned int 365796263Sobrienvec_sro (vector unsigned int a1, vector signed char a2) 365896263Sobrien{ 365996263Sobrien return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 366096263Sobrien} 366196263Sobrien 366296263Sobrieninline vector unsigned int 366396263Sobrienvec_sro (vector unsigned int a1, vector unsigned char a2) 366496263Sobrien{ 366596263Sobrien return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 366696263Sobrien} 366796263Sobrien 366896263Sobrieninline vector signed short 366996263Sobrienvec_sro (vector signed short a1, vector signed char a2) 367096263Sobrien{ 367196263Sobrien return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 367296263Sobrien} 367396263Sobrien 367496263Sobrieninline vector signed short 367596263Sobrienvec_sro (vector signed short a1, vector unsigned char a2) 367696263Sobrien{ 367796263Sobrien return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 367896263Sobrien} 367996263Sobrien 368096263Sobrieninline vector unsigned short 368196263Sobrienvec_sro (vector unsigned short a1, vector signed char a2) 368296263Sobrien{ 368396263Sobrien return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 368496263Sobrien} 368596263Sobrien 368696263Sobrieninline vector unsigned short 368796263Sobrienvec_sro (vector unsigned short a1, vector unsigned char a2) 368896263Sobrien{ 368996263Sobrien return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 369096263Sobrien} 369196263Sobrien 369296263Sobrieninline vector signed char 369396263Sobrienvec_sro (vector signed char a1, vector signed char a2) 369496263Sobrien{ 369596263Sobrien return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 369696263Sobrien} 369796263Sobrien 369896263Sobrieninline vector signed char 369996263Sobrienvec_sro (vector signed char a1, vector unsigned char a2) 370096263Sobrien{ 370196263Sobrien return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 370296263Sobrien} 370396263Sobrien 370496263Sobrieninline vector unsigned char 370596263Sobrienvec_sro (vector unsigned char a1, vector signed char a2) 370696263Sobrien{ 370796263Sobrien return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 370896263Sobrien} 370996263Sobrien 371096263Sobrieninline vector unsigned char 371196263Sobrienvec_sro (vector unsigned char a1, vector unsigned char a2) 371296263Sobrien{ 371396263Sobrien return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); 371496263Sobrien} 371596263Sobrien 371696263Sobrien/* vec_st */ 371796263Sobrien 371896263Sobrieninline void 371996263Sobrienvec_st (vector float a1, int a2, void *a3) 372096263Sobrien{ 372196263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 372296263Sobrien} 372396263Sobrien 372496263Sobrieninline void 372596263Sobrienvec_st (vector signed int a1, int a2, void *a3) 372696263Sobrien{ 372796263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 372896263Sobrien} 372996263Sobrien 373096263Sobrieninline void 373196263Sobrienvec_st (vector unsigned int a1, int a2, void *a3) 373296263Sobrien{ 373396263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 373496263Sobrien} 373596263Sobrien 373696263Sobrieninline void 373796263Sobrienvec_st (vector signed short a1, int a2, void *a3) 373896263Sobrien{ 373996263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 374096263Sobrien} 374196263Sobrien 374296263Sobrieninline void 374396263Sobrienvec_st (vector unsigned short a1, int a2, void *a3) 374496263Sobrien{ 374596263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 374696263Sobrien} 374796263Sobrien 374896263Sobrieninline void 374996263Sobrienvec_st (vector signed char a1, int a2, void *a3) 375096263Sobrien{ 375196263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 375296263Sobrien} 375396263Sobrien 375496263Sobrieninline void 375596263Sobrienvec_st (vector unsigned char a1, int a2, void *a3) 375696263Sobrien{ 375796263Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); 375896263Sobrien} 375996263Sobrien 376096263Sobrien/* vec_ste */ 376196263Sobrien 376296263Sobrieninline void 376396263Sobrienvec_ste (vector signed char a1, int a2, void *a3) 376496263Sobrien{ 376596263Sobrien __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 376696263Sobrien} 376796263Sobrien 376896263Sobrieninline void 376996263Sobrienvec_ste (vector unsigned char a1, int a2, void *a3) 377096263Sobrien{ 377196263Sobrien __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 377296263Sobrien} 377396263Sobrien 377496263Sobrieninline void 377596263Sobrienvec_ste (vector signed short a1, int a2, void *a3) 377696263Sobrien{ 377796263Sobrien __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 377896263Sobrien} 377996263Sobrien 378096263Sobrieninline void 378196263Sobrienvec_ste (vector unsigned short a1, int a2, void *a3) 378296263Sobrien{ 378396263Sobrien __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 378496263Sobrien} 378596263Sobrien 378696263Sobrieninline void 378796263Sobrienvec_ste (vector float a1, int a2, void *a3) 378896263Sobrien{ 378996263Sobrien __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 379096263Sobrien} 379196263Sobrien 379296263Sobrieninline void 379396263Sobrienvec_ste (vector signed int a1, int a2, void *a3) 379496263Sobrien{ 379596263Sobrien __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 379696263Sobrien} 379796263Sobrien 379896263Sobrieninline void 379996263Sobrienvec_ste (vector unsigned int a1, int a2, void *a3) 380096263Sobrien{ 380196263Sobrien __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 380296263Sobrien} 380396263Sobrien 380496263Sobrien/* vec_stvewx */ 380596263Sobrien 380696263Sobrieninline void 380796263Sobrienvec_stvewx (vector float a1, int a2, void *a3) 380896263Sobrien{ 380996263Sobrien __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 381096263Sobrien} 381196263Sobrien 381296263Sobrieninline void 381396263Sobrienvec_stvewx (vector signed int a1, int a2, void *a3) 381496263Sobrien{ 381596263Sobrien __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 381696263Sobrien} 381796263Sobrien 381896263Sobrieninline void 381996263Sobrienvec_stvewx (vector unsigned int a1, int a2, void *a3) 382096263Sobrien{ 382196263Sobrien __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); 382296263Sobrien} 382396263Sobrien 382496263Sobrien/* vec_stvehx */ 382596263Sobrien 382696263Sobrieninline void 382796263Sobrienvec_stvehx (vector signed short a1, int a2, void *a3) 382896263Sobrien{ 382996263Sobrien __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 383096263Sobrien} 383196263Sobrien 383296263Sobrieninline void 383396263Sobrienvec_stvehx (vector unsigned short a1, int a2, void *a3) 383496263Sobrien{ 383596263Sobrien __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); 383696263Sobrien} 383796263Sobrien 383896263Sobrien/* vec_stvebx */ 383996263Sobrien 384096263Sobrieninline void 384196263Sobrienvec_stvebx (vector signed char a1, int a2, void *a3) 384296263Sobrien{ 384396263Sobrien __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 384496263Sobrien} 384596263Sobrien 384696263Sobrieninline void 384796263Sobrienvec_stvebx (vector unsigned char a1, int a2, void *a3) 384896263Sobrien{ 384996263Sobrien __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); 385096263Sobrien} 385196263Sobrien 385296263Sobrien/* vec_stl */ 385396263Sobrien 385496263Sobrieninline void 385596263Sobrienvec_stl (vector float a1, int a2, void *a3) 385696263Sobrien{ 385796263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 385896263Sobrien} 385996263Sobrien 386096263Sobrieninline void 386196263Sobrienvec_stl (vector signed int a1, int a2, void *a3) 386296263Sobrien{ 386396263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 386496263Sobrien} 386596263Sobrien 386696263Sobrieninline void 386796263Sobrienvec_stl (vector unsigned int a1, int a2, void *a3) 386896263Sobrien{ 386996263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 387096263Sobrien} 387196263Sobrien 387296263Sobrieninline void 387396263Sobrienvec_stl (vector signed short a1, int a2, void *a3) 387496263Sobrien{ 387596263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 387696263Sobrien} 387796263Sobrien 387896263Sobrieninline void 387996263Sobrienvec_stl (vector unsigned short a1, int a2, void *a3) 388096263Sobrien{ 388196263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 388296263Sobrien} 388396263Sobrien 388496263Sobrieninline void 388596263Sobrienvec_stl (vector signed char a1, int a2, void *a3) 388696263Sobrien{ 388796263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 388896263Sobrien} 388996263Sobrien 389096263Sobrieninline void 389196263Sobrienvec_stl (vector unsigned char a1, int a2, void *a3) 389296263Sobrien{ 389396263Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); 389496263Sobrien} 389596263Sobrien 389696263Sobrien/* vec_sub */ 389796263Sobrien 389896263Sobrieninline vector signed char 389996263Sobrienvec_sub (vector signed char a1, vector signed char a2) 390096263Sobrien{ 390196263Sobrien return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 390296263Sobrien} 390396263Sobrien 390496263Sobrieninline vector unsigned char 390596263Sobrienvec_sub (vector signed char a1, vector unsigned char a2) 390696263Sobrien{ 390796263Sobrien return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 390896263Sobrien} 390996263Sobrien 391096263Sobrieninline vector unsigned char 391196263Sobrienvec_sub (vector unsigned char a1, vector signed char a2) 391296263Sobrien{ 391396263Sobrien return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 391496263Sobrien} 391596263Sobrien 391696263Sobrieninline vector unsigned char 391796263Sobrienvec_sub (vector unsigned char a1, vector unsigned char a2) 391896263Sobrien{ 391996263Sobrien return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 392096263Sobrien} 392196263Sobrien 392296263Sobrieninline vector signed short 392396263Sobrienvec_sub (vector signed short a1, vector signed short a2) 392496263Sobrien{ 392596263Sobrien return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 392696263Sobrien} 392796263Sobrien 392896263Sobrieninline vector unsigned short 392996263Sobrienvec_sub (vector signed short a1, vector unsigned short a2) 393096263Sobrien{ 393196263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 393296263Sobrien} 393396263Sobrien 393496263Sobrieninline vector unsigned short 393596263Sobrienvec_sub (vector unsigned short a1, vector signed short a2) 393696263Sobrien{ 393796263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 393896263Sobrien} 393996263Sobrien 394096263Sobrieninline vector unsigned short 394196263Sobrienvec_sub (vector unsigned short a1, vector unsigned short a2) 394296263Sobrien{ 394396263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 394496263Sobrien} 394596263Sobrien 394696263Sobrieninline vector signed int 394796263Sobrienvec_sub (vector signed int a1, vector signed int a2) 394896263Sobrien{ 394996263Sobrien return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 395096263Sobrien} 395196263Sobrien 395296263Sobrieninline vector unsigned int 395396263Sobrienvec_sub (vector signed int a1, vector unsigned int a2) 395496263Sobrien{ 395596263Sobrien return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 395696263Sobrien} 395796263Sobrien 395896263Sobrieninline vector unsigned int 395996263Sobrienvec_sub (vector unsigned int a1, vector signed int a2) 396096263Sobrien{ 396196263Sobrien return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 396296263Sobrien} 396396263Sobrien 396496263Sobrieninline vector unsigned int 396596263Sobrienvec_sub (vector unsigned int a1, vector unsigned int a2) 396696263Sobrien{ 396796263Sobrien return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 396896263Sobrien} 396996263Sobrien 397096263Sobrieninline vector float 397196263Sobrienvec_sub (vector float a1, vector float a2) 397296263Sobrien{ 397396263Sobrien return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2); 397496263Sobrien} 397596263Sobrien 397696263Sobrien/* vec_vsubfp */ 397796263Sobrien 397896263Sobrieninline vector float 397996263Sobrienvec_vsubfp (vector float a1, vector float a2) 398096263Sobrien{ 398196263Sobrien return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2); 398296263Sobrien} 398396263Sobrien 398496263Sobrien/* vec_vsubuwm */ 398596263Sobrien 398696263Sobrieninline vector signed int 398796263Sobrienvec_vsubuwm (vector signed int a1, vector signed int a2) 398896263Sobrien{ 398996263Sobrien return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 399096263Sobrien} 399196263Sobrien 399296263Sobrieninline vector unsigned int 399396263Sobrienvec_vsubuwm (vector signed int a1, vector unsigned int a2) 399496263Sobrien{ 399596263Sobrien return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 399696263Sobrien} 399796263Sobrien 399896263Sobrieninline vector unsigned int 399996263Sobrienvec_vsubuwm (vector unsigned int a1, vector signed int a2) 400096263Sobrien{ 400196263Sobrien return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 400296263Sobrien} 400396263Sobrien 400496263Sobrieninline vector unsigned int 400596263Sobrienvec_vsubuwm (vector unsigned int a1, vector unsigned int a2) 400696263Sobrien{ 400796263Sobrien return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); 400896263Sobrien} 400996263Sobrien 401096263Sobrien/* vec_vsubuhm */ 401196263Sobrien 401296263Sobrieninline vector signed short 401396263Sobrienvec_vsubuhm (vector signed short a1, vector signed short a2) 401496263Sobrien{ 401596263Sobrien return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 401696263Sobrien} 401796263Sobrien 401896263Sobrieninline vector unsigned short 401996263Sobrienvec_vsubuhm (vector signed short a1, vector unsigned short a2) 402096263Sobrien{ 402196263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 402296263Sobrien} 402396263Sobrien 402496263Sobrieninline vector unsigned short 402596263Sobrienvec_vsubuhm (vector unsigned short a1, vector signed short a2) 402696263Sobrien{ 402796263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 402896263Sobrien} 402996263Sobrien 403096263Sobrieninline vector unsigned short 403196263Sobrienvec_vsubuhm (vector unsigned short a1, vector unsigned short a2) 403296263Sobrien{ 403396263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); 403496263Sobrien} 403596263Sobrien 403696263Sobrien/* vec_vsububm */ 403796263Sobrien 403896263Sobrieninline vector signed char 403996263Sobrienvec_vsububm (vector signed char a1, vector signed char a2) 404096263Sobrien{ 404196263Sobrien return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 404296263Sobrien} 404396263Sobrien 404496263Sobrieninline vector unsigned char 404596263Sobrienvec_vsububm (vector signed char a1, vector unsigned char a2) 404696263Sobrien{ 404796263Sobrien return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 404896263Sobrien} 404996263Sobrien 405096263Sobrieninline vector unsigned char 405196263Sobrienvec_vsububm (vector unsigned char a1, vector signed char a2) 405296263Sobrien{ 405396263Sobrien return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 405496263Sobrien} 405596263Sobrien 405696263Sobrieninline vector unsigned char 405796263Sobrienvec_vsububm (vector unsigned char a1, vector unsigned char a2) 405896263Sobrien{ 405996263Sobrien return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); 406096263Sobrien} 406196263Sobrien 406296263Sobrien/* vec_subc */ 406396263Sobrien 406496263Sobrieninline vector unsigned int 406596263Sobrienvec_subc (vector unsigned int a1, vector unsigned int a2) 406696263Sobrien{ 406796263Sobrien return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2); 406896263Sobrien} 406996263Sobrien 407096263Sobrien/* vec_subs */ 407196263Sobrien 407296263Sobrieninline vector unsigned char 407396263Sobrienvec_subs (vector signed char a1, vector unsigned char a2) 407496263Sobrien{ 407596263Sobrien return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 407696263Sobrien} 407796263Sobrien 407896263Sobrieninline vector unsigned char 407996263Sobrienvec_subs (vector unsigned char a1, vector signed char a2) 408096263Sobrien{ 408196263Sobrien return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 408296263Sobrien} 408396263Sobrien 408496263Sobrieninline vector unsigned char 408596263Sobrienvec_subs (vector unsigned char a1, vector unsigned char a2) 408696263Sobrien{ 408796263Sobrien return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 408896263Sobrien} 408996263Sobrien 409096263Sobrieninline vector signed char 409196263Sobrienvec_subs (vector signed char a1, vector signed char a2) 409296263Sobrien{ 409396263Sobrien return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); 409496263Sobrien} 409596263Sobrien 409696263Sobrieninline vector unsigned short 409796263Sobrienvec_subs (vector signed short a1, vector unsigned short a2) 409896263Sobrien{ 409996263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 410096263Sobrien} 410196263Sobrien 410296263Sobrieninline vector unsigned short 410396263Sobrienvec_subs (vector unsigned short a1, vector signed short a2) 410496263Sobrien{ 410596263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 410696263Sobrien} 410796263Sobrien 410896263Sobrieninline vector unsigned short 410996263Sobrienvec_subs (vector unsigned short a1, vector unsigned short a2) 411096263Sobrien{ 411196263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 411296263Sobrien} 411396263Sobrien 411496263Sobrieninline vector signed short 411596263Sobrienvec_subs (vector signed short a1, vector signed short a2) 411696263Sobrien{ 411796263Sobrien return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); 411896263Sobrien} 411996263Sobrien 412096263Sobrieninline vector unsigned int 412196263Sobrienvec_subs (vector signed int a1, vector unsigned int a2) 412296263Sobrien{ 412396263Sobrien return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 412496263Sobrien} 412596263Sobrien 412696263Sobrieninline vector unsigned int 412796263Sobrienvec_subs (vector unsigned int a1, vector signed int a2) 412896263Sobrien{ 412996263Sobrien return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 413096263Sobrien} 413196263Sobrien 413296263Sobrieninline vector unsigned int 413396263Sobrienvec_subs (vector unsigned int a1, vector unsigned int a2) 413496263Sobrien{ 413596263Sobrien return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 413696263Sobrien} 413796263Sobrien 413896263Sobrieninline vector signed int 413996263Sobrienvec_subs (vector signed int a1, vector signed int a2) 414096263Sobrien{ 414196263Sobrien return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); 414296263Sobrien} 414396263Sobrien 414496263Sobrien/* vec_vsubsws */ 414596263Sobrien 414696263Sobrieninline vector signed int 414796263Sobrienvec_vsubsws (vector signed int a1, vector signed int a2) 414896263Sobrien{ 414996263Sobrien return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); 415096263Sobrien} 415196263Sobrien 415296263Sobrien/* vec_vsubuws */ 415396263Sobrien 415496263Sobrieninline vector unsigned int 415596263Sobrienvec_vsubuws (vector signed int a1, vector unsigned int a2) 415696263Sobrien{ 415796263Sobrien return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 415896263Sobrien} 415996263Sobrien 416096263Sobrieninline vector unsigned int 416196263Sobrienvec_vsubuws (vector unsigned int a1, vector signed int a2) 416296263Sobrien{ 416396263Sobrien return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 416496263Sobrien} 416596263Sobrien 416696263Sobrieninline vector unsigned int 416796263Sobrienvec_vsubuws (vector unsigned int a1, vector unsigned int a2) 416896263Sobrien{ 416996263Sobrien return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); 417096263Sobrien} 417196263Sobrien 417296263Sobrien/* vec_vsubshs */ 417396263Sobrien 417496263Sobrieninline vector signed short 417596263Sobrienvec_vsubshs (vector signed short a1, vector signed short a2) 417696263Sobrien{ 417796263Sobrien return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); 417896263Sobrien} 417996263Sobrien 418096263Sobrien/* vec_vsubuhs */ 418196263Sobrien 418296263Sobrieninline vector unsigned short 418396263Sobrienvec_vsubuhs (vector signed short a1, vector unsigned short a2) 418496263Sobrien{ 418596263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 418696263Sobrien} 418796263Sobrien 418896263Sobrieninline vector unsigned short 418996263Sobrienvec_vsubuhs (vector unsigned short a1, vector signed short a2) 419096263Sobrien{ 419196263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 419296263Sobrien} 419396263Sobrien 419496263Sobrien/* vec_vsubuhs */ 419596263Sobrien 419696263Sobrieninline vector unsigned short 419796263Sobrienvec_vsubsuhs (vector signed short a1, vector unsigned short a2) 419896263Sobrien{ 419996263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 420096263Sobrien} 420196263Sobrien 420296263Sobrieninline vector unsigned short 420396263Sobrienvec_vsubsuhs (vector unsigned short a1, vector signed short a2) 420496263Sobrien{ 420596263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 420696263Sobrien} 420796263Sobrien 420896263Sobrieninline vector unsigned short 420996263Sobrienvec_vsubsuhs (vector unsigned short a1, vector unsigned short a2) 421096263Sobrien{ 421196263Sobrien return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); 421296263Sobrien} 421396263Sobrien 421496263Sobrien/* vec_vsubsbs */ 421596263Sobrien 421696263Sobrieninline vector signed char 421796263Sobrienvec_vsubsbs (vector signed char a1, vector signed char a2) 421896263Sobrien{ 421996263Sobrien return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); 422096263Sobrien} 422196263Sobrien 422296263Sobrien/* vec_vsububs */ 422396263Sobrien 422496263Sobrieninline vector unsigned char 422596263Sobrienvec_vsubsubs (vector signed char a1, vector unsigned char a2) 422696263Sobrien{ 422796263Sobrien return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 422896263Sobrien} 422996263Sobrien 423096263Sobrieninline vector unsigned char 423196263Sobrienvec_vsubsubs (vector unsigned char a1, vector signed char a2) 423296263Sobrien{ 423396263Sobrien return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 423496263Sobrien} 423596263Sobrien 423696263Sobrieninline vector unsigned char 423796263Sobrienvec_vsubsubs (vector unsigned char a1, vector unsigned char a2) 423896263Sobrien{ 423996263Sobrien return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); 424096263Sobrien} 424196263Sobrien 424296263Sobrien/* vec_sum4s */ 424396263Sobrien 424496263Sobrieninline vector unsigned int 424596263Sobrienvec_sum4s (vector unsigned char a1, vector unsigned int a2) 424696263Sobrien{ 424796263Sobrien return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2); 424896263Sobrien} 424996263Sobrien 425096263Sobrieninline vector signed int 425196263Sobrienvec_sum4s (vector signed char a1, vector signed int a2) 425296263Sobrien{ 425396263Sobrien return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2); 425496263Sobrien} 425596263Sobrien 425696263Sobrieninline vector signed int 425796263Sobrienvec_sum4s (vector signed short a1, vector signed int a2) 425896263Sobrien{ 425996263Sobrien return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2); 426096263Sobrien} 426196263Sobrien 426296263Sobrien/* vec_vsum4shs */ 426396263Sobrien 426496263Sobrieninline vector signed int 426596263Sobrienvec_vsum4shss (vector signed short a1, vector signed int a2) 426696263Sobrien{ 426796263Sobrien return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2); 426896263Sobrien} 426996263Sobrien 427096263Sobrien/* vec_vsum4sbs */ 427196263Sobrien 427296263Sobrieninline vector signed int 427396263Sobrienvec_vsum4sbs (vector signed char a1, vector signed int a2) 427496263Sobrien{ 427596263Sobrien return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2); 427696263Sobrien} 427796263Sobrien 427896263Sobrien/* vec_vsum4ubs */ 427996263Sobrien 428096263Sobrieninline vector unsigned int 428196263Sobrienvec_vsum4ubs (vector unsigned char a1, vector unsigned int a2) 428296263Sobrien{ 428396263Sobrien return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2); 428496263Sobrien} 428596263Sobrien 428696263Sobrien/* vec_sum2s */ 428796263Sobrien 428896263Sobrieninline vector signed int 428996263Sobrienvec_sum2s (vector signed int a1, vector signed int a2) 429096263Sobrien{ 429196263Sobrien return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2); 429296263Sobrien} 429396263Sobrien 429496263Sobrien/* vec_sums */ 429596263Sobrien 429696263Sobrieninline vector signed int 429796263Sobrienvec_sums (vector signed int a1, vector signed int a2) 429896263Sobrien{ 429996263Sobrien return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2); 430096263Sobrien} 430196263Sobrien 430296263Sobrien/* vec_trunc */ 430396263Sobrien 430496263Sobrieninline vector float 430596263Sobrienvec_trunc (vector float a1) 430696263Sobrien{ 430796263Sobrien return (vector float) __builtin_altivec_vrfiz ((vector float) a1); 430896263Sobrien} 430996263Sobrien 431096263Sobrien/* vec_unpackh */ 431196263Sobrien 431296263Sobrieninline vector signed short 431396263Sobrienvec_unpackh (vector signed char a1) 431496263Sobrien{ 431596263Sobrien return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); 431696263Sobrien} 431796263Sobrien 431896263Sobrieninline vector signed int 431996263Sobrienvec_unpackh (vector signed short a1) 432096263Sobrien{ 432196263Sobrien return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); 432296263Sobrien} 432396263Sobrien 432496263Sobrien/* vec_vupkhsh */ 432596263Sobrien 432696263Sobrieninline vector signed int 432796263Sobrienvec_vupkhsh (vector signed short a1) 432896263Sobrien{ 432996263Sobrien return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); 433096263Sobrien} 433196263Sobrien 433296263Sobrien/* vec_vupkhpx */ 433396263Sobrien 433496263Sobrieninline vector unsigned int 433596263Sobrienvec_vupkhpx (vector signed short a1) 433696263Sobrien{ 433796263Sobrien return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1); 433896263Sobrien} 433996263Sobrien 434096263Sobrien/* vec_vupkhsb */ 434196263Sobrien 434296263Sobrieninline vector signed short 434396263Sobrienvec_vupkhsb (vector signed char a1) 434496263Sobrien{ 434596263Sobrien return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); 434696263Sobrien} 434796263Sobrien 434896263Sobrien/* vec_unpackl */ 434996263Sobrien 435096263Sobrieninline vector signed short 435196263Sobrienvec_unpackl (vector signed char a1) 435296263Sobrien{ 435396263Sobrien return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); 435496263Sobrien} 435596263Sobrien 435696263Sobrieninline vector unsigned int 435796263Sobrienvec_vupklpx (vector signed short a1) 435896263Sobrien{ 435996263Sobrien return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1); 436096263Sobrien} 436196263Sobrien 436296263Sobrieninline vector signed int 436396263Sobrienvec_unpackl (vector signed short a1) 436496263Sobrien{ 436596263Sobrien return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); 436696263Sobrien} 436796263Sobrien 436896263Sobrien/* vec_upklsh */ 436996263Sobrien 437096263Sobrieninline vector signed int 437196263Sobrienvec_vupklsh (vector signed short a1) 437296263Sobrien{ 437396263Sobrien return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); 437496263Sobrien} 437596263Sobrien 437696263Sobrien/* vec_vupklsb */ 437796263Sobrien 437896263Sobrieninline vector signed short 437996263Sobrienvec_vupklsb (vector signed char a1) 438096263Sobrien{ 438196263Sobrien return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); 438296263Sobrien} 438396263Sobrien 438496263Sobrien/* vec_xor */ 438596263Sobrien 438696263Sobrieninline vector float 438796263Sobrienvec_xor (vector float a1, vector float a2) 438896263Sobrien{ 438996263Sobrien return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 439096263Sobrien} 439196263Sobrien 439296263Sobrieninline vector float 439396263Sobrienvec_xor (vector float a1, vector signed int a2) 439496263Sobrien{ 439596263Sobrien return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 439696263Sobrien} 439796263Sobrien 439896263Sobrieninline vector float 439996263Sobrienvec_xor (vector signed int a1, vector float a2) 440096263Sobrien{ 440196263Sobrien return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 440296263Sobrien} 440396263Sobrien 440496263Sobrieninline vector signed int 440596263Sobrienvec_xor (vector signed int a1, vector signed int a2) 440696263Sobrien{ 440796263Sobrien return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 440896263Sobrien} 440996263Sobrien 441096263Sobrieninline vector unsigned int 441196263Sobrienvec_xor (vector signed int a1, vector unsigned int a2) 441296263Sobrien{ 441396263Sobrien return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 441496263Sobrien} 441596263Sobrien 441696263Sobrieninline vector unsigned int 441796263Sobrienvec_xor (vector unsigned int a1, vector signed int a2) 441896263Sobrien{ 441996263Sobrien return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 442096263Sobrien} 442196263Sobrien 442296263Sobrieninline vector unsigned int 442396263Sobrienvec_xor (vector unsigned int a1, vector unsigned int a2) 442496263Sobrien{ 442596263Sobrien return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 442696263Sobrien} 442796263Sobrien 442896263Sobrieninline vector signed short 442996263Sobrienvec_xor (vector signed short a1, vector signed short a2) 443096263Sobrien{ 443196263Sobrien return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 443296263Sobrien} 443396263Sobrien 443496263Sobrieninline vector unsigned short 443596263Sobrienvec_xor (vector signed short a1, vector unsigned short a2) 443696263Sobrien{ 443796263Sobrien return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 443896263Sobrien} 443996263Sobrien 444096263Sobrieninline vector unsigned short 444196263Sobrienvec_xor (vector unsigned short a1, vector signed short a2) 444296263Sobrien{ 444396263Sobrien return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 444496263Sobrien} 444596263Sobrien 444696263Sobrieninline vector unsigned short 444796263Sobrienvec_xor (vector unsigned short a1, vector unsigned short a2) 444896263Sobrien{ 444996263Sobrien return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 445096263Sobrien} 445196263Sobrien 445296263Sobrieninline vector signed char 445396263Sobrienvec_xor (vector signed char a1, vector signed char a2) 445496263Sobrien{ 445596263Sobrien return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 445696263Sobrien} 445796263Sobrien 445896263Sobrieninline vector unsigned char 445996263Sobrienvec_xor (vector signed char a1, vector unsigned char a2) 446096263Sobrien{ 446196263Sobrien return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 446296263Sobrien} 446396263Sobrien 446496263Sobrieninline vector unsigned char 446596263Sobrienvec_xor (vector unsigned char a1, vector signed char a2) 446696263Sobrien{ 446796263Sobrien return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 446896263Sobrien} 446996263Sobrien 447096263Sobrieninline vector unsigned char 447196263Sobrienvec_xor (vector unsigned char a1, vector unsigned char a2) 447296263Sobrien{ 447396263Sobrien return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); 447496263Sobrien} 447596263Sobrien 447696263Sobrien/* vec_all_eq */ 447796263Sobrien 447896263Sobrieninline int 447996263Sobrienvec_all_eq (vector signed char a1, vector unsigned char a2) 448096263Sobrien{ 448196263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2); 448296263Sobrien} 448396263Sobrien 448496263Sobrieninline int 448596263Sobrienvec_all_eq (vector signed char a1, vector signed char a2) 448696263Sobrien{ 448796263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2); 448896263Sobrien} 448996263Sobrien 449096263Sobrieninline int 449196263Sobrienvec_all_eq (vector unsigned char a1, vector signed char a2) 449296263Sobrien{ 449396263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 449496263Sobrien} 449596263Sobrien 449696263Sobrieninline int 449796263Sobrienvec_all_eq (vector unsigned char a1, vector unsigned char a2) 449896263Sobrien{ 449996263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 450096263Sobrien} 450196263Sobrien 450296263Sobrieninline int 450396263Sobrienvec_all_eq (vector signed short a1, vector unsigned short a2) 450496263Sobrien{ 450596263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 450696263Sobrien} 450796263Sobrien 450896263Sobrieninline int 450996263Sobrienvec_all_eq (vector signed short a1, vector signed short a2) 451096263Sobrien{ 451196263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 451296263Sobrien} 451396263Sobrien 451496263Sobrieninline int 451596263Sobrienvec_all_eq (vector unsigned short a1, vector signed short a2) 451696263Sobrien{ 451796263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 451896263Sobrien} 451996263Sobrien 452096263Sobrieninline int 452196263Sobrienvec_all_eq (vector unsigned short a1, vector unsigned short a2) 452296263Sobrien{ 452396263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 452496263Sobrien} 452596263Sobrien 452696263Sobrieninline int 452796263Sobrienvec_all_eq (vector signed int a1, vector unsigned int a2) 452896263Sobrien{ 452996263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 453096263Sobrien} 453196263Sobrien 453296263Sobrieninline int 453396263Sobrienvec_all_eq (vector signed int a1, vector signed int a2) 453496263Sobrien{ 453596263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 453696263Sobrien} 453796263Sobrien 453896263Sobrieninline int 453996263Sobrienvec_all_eq (vector unsigned int a1, vector signed int a2) 454096263Sobrien{ 454196263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 454296263Sobrien} 454396263Sobrien 454496263Sobrieninline int 454596263Sobrienvec_all_eq (vector unsigned int a1, vector unsigned int a2) 454696263Sobrien{ 454796263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 454896263Sobrien} 454996263Sobrien 455096263Sobrieninline int 455196263Sobrienvec_all_eq (vector float a1, vector float a2) 455296263Sobrien{ 455396263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2); 455496263Sobrien} 455596263Sobrien 455696263Sobrien/* vec_all_ge */ 455796263Sobrien 455896263Sobrieninline int 455996263Sobrienvec_all_ge (vector signed char a1, vector unsigned char a2) 456096263Sobrien{ 456196263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 456296263Sobrien} 456396263Sobrien 456496263Sobrieninline int 456596263Sobrienvec_all_ge (vector unsigned char a1, vector signed char a2) 456696263Sobrien{ 456796263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 456896263Sobrien} 456996263Sobrien 457096263Sobrieninline int 457196263Sobrienvec_all_ge (vector unsigned char a1, vector unsigned char a2) 457296263Sobrien{ 457396263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 457496263Sobrien} 457596263Sobrien 457696263Sobrieninline int 457796263Sobrienvec_all_ge (vector signed char a1, vector signed char a2) 457896263Sobrien{ 457996263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); 458096263Sobrien} 458196263Sobrien 458296263Sobrieninline int 458396263Sobrienvec_all_ge (vector signed short a1, vector unsigned short a2) 458496263Sobrien{ 458596263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 458696263Sobrien} 458796263Sobrien 458896263Sobrieninline int 458996263Sobrienvec_all_ge (vector unsigned short a1, vector signed short a2) 459096263Sobrien{ 459196263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 459296263Sobrien} 459396263Sobrien 459496263Sobrieninline int 459596263Sobrienvec_all_ge (vector unsigned short a1, vector unsigned short a2) 459696263Sobrien{ 459796263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 459896263Sobrien} 459996263Sobrien 460096263Sobrieninline int 460196263Sobrienvec_all_ge (vector signed short a1, vector signed short a2) 460296263Sobrien{ 460396263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); 460496263Sobrien} 460596263Sobrien 460696263Sobrieninline int 460796263Sobrienvec_all_ge (vector signed int a1, vector unsigned int a2) 460896263Sobrien{ 460996263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 461096263Sobrien} 461196263Sobrien 461296263Sobrieninline int 461396263Sobrienvec_all_ge (vector unsigned int a1, vector signed int a2) 461496263Sobrien{ 461596263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 461696263Sobrien} 461796263Sobrien 461896263Sobrieninline int 461996263Sobrienvec_all_ge (vector unsigned int a1, vector unsigned int a2) 462096263Sobrien{ 462196263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 462296263Sobrien} 462396263Sobrien 462496263Sobrieninline int 462596263Sobrienvec_all_ge (vector signed int a1, vector signed int a2) 462696263Sobrien{ 462796263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); 462896263Sobrien} 462996263Sobrien 463096263Sobrieninline int 463196263Sobrienvec_all_ge (vector float a1, vector float a2) 463296263Sobrien{ 463396263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); 463496263Sobrien} 463596263Sobrien 463696263Sobrien/* vec_all_gt */ 463796263Sobrien 463896263Sobrieninline int 463996263Sobrienvec_all_gt (vector signed char a1, vector unsigned char a2) 464096263Sobrien{ 464196263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 464296263Sobrien} 464396263Sobrien 464496263Sobrieninline int 464596263Sobrienvec_all_gt (vector unsigned char a1, vector signed char a2) 464696263Sobrien{ 464796263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 464896263Sobrien} 464996263Sobrien 465096263Sobrieninline int 465196263Sobrienvec_all_gt (vector unsigned char a1, vector unsigned char a2) 465296263Sobrien{ 465396263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 465496263Sobrien} 465596263Sobrien 465696263Sobrieninline int 465796263Sobrienvec_all_gt (vector signed char a1, vector signed char a2) 465896263Sobrien{ 465996263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); 466096263Sobrien} 466196263Sobrien 466296263Sobrieninline int 466396263Sobrienvec_all_gt (vector signed short a1, vector unsigned short a2) 466496263Sobrien{ 466596263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 466696263Sobrien} 466796263Sobrien 466896263Sobrieninline int 466996263Sobrienvec_all_gt (vector unsigned short a1, vector signed short a2) 467096263Sobrien{ 467196263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 467296263Sobrien} 467396263Sobrien 467496263Sobrieninline int 467596263Sobrienvec_all_gt (vector unsigned short a1, vector unsigned short a2) 467696263Sobrien{ 467796263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 467896263Sobrien} 467996263Sobrien 468096263Sobrieninline int 468196263Sobrienvec_all_gt (vector signed short a1, vector signed short a2) 468296263Sobrien{ 468396263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); 468496263Sobrien} 468596263Sobrien 468696263Sobrieninline int 468796263Sobrienvec_all_gt (vector signed int a1, vector unsigned int a2) 468896263Sobrien{ 468996263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 469096263Sobrien} 469196263Sobrien 469296263Sobrieninline int 469396263Sobrienvec_all_gt (vector unsigned int a1, vector signed int a2) 469496263Sobrien{ 469596263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 469696263Sobrien} 469796263Sobrien 469896263Sobrieninline int 469996263Sobrienvec_all_gt (vector unsigned int a1, vector unsigned int a2) 470096263Sobrien{ 470196263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 470296263Sobrien} 470396263Sobrien 470496263Sobrieninline int 470596263Sobrienvec_all_gt (vector signed int a1, vector signed int a2) 470696263Sobrien{ 470796263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); 470896263Sobrien} 470996263Sobrien 471096263Sobrieninline int 471196263Sobrienvec_all_gt (vector float a1, vector float a2) 471296263Sobrien{ 471396263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2); 471496263Sobrien} 471596263Sobrien 471696263Sobrien/* vec_all_in */ 471796263Sobrien 471896263Sobrieninline int 471996263Sobrienvec_all_in (vector float a1, vector float a2) 472096263Sobrien{ 472196263Sobrien return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2); 472296263Sobrien} 472396263Sobrien 472496263Sobrien/* vec_all_le */ 472596263Sobrien 472696263Sobrieninline int 472796263Sobrienvec_all_le (vector signed char a1, vector unsigned char a2) 472896263Sobrien{ 472996263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 473096263Sobrien} 473196263Sobrien 473296263Sobrieninline int 473396263Sobrienvec_all_le (vector unsigned char a1, vector signed char a2) 473496263Sobrien{ 473596263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 473696263Sobrien} 473796263Sobrien 473896263Sobrieninline int 473996263Sobrienvec_all_le (vector unsigned char a1, vector unsigned char a2) 474096263Sobrien{ 474196263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 474296263Sobrien} 474396263Sobrien 474496263Sobrieninline int 474596263Sobrienvec_all_le (vector signed char a1, vector signed char a2) 474696263Sobrien{ 474796263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 474896263Sobrien} 474996263Sobrien 475096263Sobrieninline int 475196263Sobrienvec_all_le (vector signed short a1, vector unsigned short a2) 475296263Sobrien{ 475396263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 475496263Sobrien} 475596263Sobrien 475696263Sobrieninline int 475796263Sobrienvec_all_le (vector unsigned short a1, vector signed short a2) 475896263Sobrien{ 475996263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 476096263Sobrien} 476196263Sobrien 476296263Sobrieninline int 476396263Sobrienvec_all_le (vector unsigned short a1, vector unsigned short a2) 476496263Sobrien{ 476596263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 476696263Sobrien} 476796263Sobrien 476896263Sobrieninline int 476996263Sobrienvec_all_le (vector signed short a1, vector signed short a2) 477096263Sobrien{ 477196263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 477296263Sobrien} 477396263Sobrien 477496263Sobrieninline int 477596263Sobrienvec_all_le (vector signed int a1, vector unsigned int a2) 477696263Sobrien{ 477796263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 477896263Sobrien} 477996263Sobrien 478096263Sobrieninline int 478196263Sobrienvec_all_le (vector unsigned int a1, vector signed int a2) 478296263Sobrien{ 478396263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 478496263Sobrien} 478596263Sobrien 478696263Sobrieninline int 478796263Sobrienvec_all_le (vector unsigned int a1, vector unsigned int a2) 478896263Sobrien{ 478996263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 479096263Sobrien} 479196263Sobrien 479296263Sobrieninline int 479396263Sobrienvec_all_le (vector signed int a1, vector signed int a2) 479496263Sobrien{ 479596263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 479696263Sobrien} 479796263Sobrien 479896263Sobrieninline int 479996263Sobrienvec_all_le (vector float a1, vector float a2) 480096263Sobrien{ 480196263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1); 480296263Sobrien} 480396263Sobrien 480496263Sobrien/* vec_all_lt */ 480596263Sobrien 480696263Sobrieninline int 480796263Sobrienvec_all_lt (vector signed char a1, vector unsigned char a2) 480896263Sobrien{ 480996263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 481096263Sobrien} 481196263Sobrien 481296263Sobrieninline int 481396263Sobrienvec_all_lt (vector unsigned char a1, vector signed char a2) 481496263Sobrien{ 481596263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 481696263Sobrien} 481796263Sobrien 481896263Sobrieninline int 481996263Sobrienvec_all_lt (vector unsigned char a1, vector unsigned char a2) 482096263Sobrien{ 482196263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 482296263Sobrien} 482396263Sobrien 482496263Sobrieninline int 482596263Sobrienvec_all_lt (vector signed char a1, vector signed char a2) 482696263Sobrien{ 482796263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); 482896263Sobrien} 482996263Sobrien 483096263Sobrieninline int 483196263Sobrienvec_all_lt (vector signed short a1, vector unsigned short a2) 483296263Sobrien{ 483396263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 483496263Sobrien} 483596263Sobrien 483696263Sobrieninline int 483796263Sobrienvec_all_lt (vector unsigned short a1, vector signed short a2) 483896263Sobrien{ 483996263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 484096263Sobrien} 484196263Sobrien 484296263Sobrieninline int 484396263Sobrienvec_all_lt (vector unsigned short a1, vector unsigned short a2) 484496263Sobrien{ 484596263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 484696263Sobrien} 484796263Sobrien 484896263Sobrieninline int 484996263Sobrienvec_all_lt (vector signed short a1, vector signed short a2) 485096263Sobrien{ 485196263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); 485296263Sobrien} 485396263Sobrien 485496263Sobrieninline int 485596263Sobrienvec_all_lt (vector signed int a1, vector unsigned int a2) 485696263Sobrien{ 485796263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 485896263Sobrien} 485996263Sobrien 486096263Sobrieninline int 486196263Sobrienvec_all_lt (vector unsigned int a1, vector signed int a2) 486296263Sobrien{ 486396263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 486496263Sobrien} 486596263Sobrien 486696263Sobrieninline int 486796263Sobrienvec_all_lt (vector unsigned int a1, vector unsigned int a2) 486896263Sobrien{ 486996263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 487096263Sobrien} 487196263Sobrien 487296263Sobrieninline int 487396263Sobrienvec_all_lt (vector signed int a1, vector signed int a2) 487496263Sobrien{ 487596263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); 487696263Sobrien} 487796263Sobrien 487896263Sobrieninline int 487996263Sobrienvec_all_lt (vector float a1, vector float a2) 488096263Sobrien{ 488196263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1); 488296263Sobrien} 488396263Sobrien 488496263Sobrien/* vec_all_nan */ 488596263Sobrien 488696263Sobrieninline int 488796263Sobrienvec_all_nan (vector float a1) 488896263Sobrien{ 488996263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); 489096263Sobrien} 489196263Sobrien 489296263Sobrien/* vec_all_ne */ 489396263Sobrien 489496263Sobrieninline int 489596263Sobrienvec_all_ne (vector signed char a1, vector unsigned char a2) 489696263Sobrien{ 489796263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 489896263Sobrien} 489996263Sobrien 490096263Sobrieninline int 490196263Sobrienvec_all_ne (vector signed char a1, vector signed char a2) 490296263Sobrien{ 490396263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 490496263Sobrien} 490596263Sobrien 490696263Sobrieninline int 490796263Sobrienvec_all_ne (vector unsigned char a1, vector signed char a2) 490896263Sobrien{ 490996263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 491096263Sobrien} 491196263Sobrien 491296263Sobrieninline int 491396263Sobrienvec_all_ne (vector unsigned char a1, vector unsigned char a2) 491496263Sobrien{ 491596263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); 491696263Sobrien} 491796263Sobrien 491896263Sobrieninline int 491996263Sobrienvec_all_ne (vector signed short a1, vector unsigned short a2) 492096263Sobrien{ 492196263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 492296263Sobrien} 492396263Sobrien 492496263Sobrieninline int 492596263Sobrienvec_all_ne (vector signed short a1, vector signed short a2) 492696263Sobrien{ 492796263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 492896263Sobrien} 492996263Sobrien 493096263Sobrieninline int 493196263Sobrienvec_all_ne (vector unsigned short a1, vector signed short a2) 493296263Sobrien{ 493396263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 493496263Sobrien} 493596263Sobrien 493696263Sobrieninline int 493796263Sobrienvec_all_ne (vector unsigned short a1, vector unsigned short a2) 493896263Sobrien{ 493996263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); 494096263Sobrien} 494196263Sobrien 494296263Sobrieninline int 494396263Sobrienvec_all_ne (vector signed int a1, vector unsigned int a2) 494496263Sobrien{ 494596263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 494696263Sobrien} 494796263Sobrien 494896263Sobrieninline int 494996263Sobrienvec_all_ne (vector signed int a1, vector signed int a2) 495096263Sobrien{ 495196263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 495296263Sobrien} 495396263Sobrien 495496263Sobrieninline int 495596263Sobrienvec_all_ne (vector unsigned int a1, vector signed int a2) 495696263Sobrien{ 495796263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 495896263Sobrien} 495996263Sobrien 496096263Sobrieninline int 496196263Sobrienvec_all_ne (vector unsigned int a1, vector unsigned int a2) 496296263Sobrien{ 496396263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); 496496263Sobrien} 496596263Sobrien 496696263Sobrieninline int 496796263Sobrienvec_all_ne (vector float a1, vector float a2) 496896263Sobrien{ 496996263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2); 497096263Sobrien} 497196263Sobrien 497296263Sobrien/* vec_all_nge */ 497396263Sobrien 497496263Sobrieninline int 497596263Sobrienvec_all_nge (vector float a1, vector float a2) 497696263Sobrien{ 497796263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); 497896263Sobrien} 497996263Sobrien 498096263Sobrien/* vec_all_ngt */ 498196263Sobrien 498296263Sobrieninline int 498396263Sobrienvec_all_ngt (vector float a1, vector float a2) 498496263Sobrien{ 498596263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2); 498696263Sobrien} 498796263Sobrien 498896263Sobrien/* vec_all_nle */ 498996263Sobrien 499096263Sobrieninline int 499196263Sobrienvec_all_nle (vector float a1, vector float a2) 499296263Sobrien{ 499396263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1); 499496263Sobrien} 499596263Sobrien 499696263Sobrien/* vec_all_nlt */ 499796263Sobrien 499896263Sobrieninline int 499996263Sobrienvec_all_nlt (vector float a1, vector float a2) 500096263Sobrien{ 500196263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1); 500296263Sobrien} 500396263Sobrien 500496263Sobrien/* vec_all_numeric */ 500596263Sobrien 500696263Sobrieninline int 500796263Sobrienvec_all_numeric (vector float a1) 500896263Sobrien{ 500996263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); 501096263Sobrien} 501196263Sobrien 501296263Sobrien/* vec_any_eq */ 501396263Sobrien 501496263Sobrieninline int 501596263Sobrienvec_any_eq (vector signed char a1, vector unsigned char a2) 501696263Sobrien{ 501796263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 501896263Sobrien} 501996263Sobrien 502096263Sobrieninline int 502196263Sobrienvec_any_eq (vector signed char a1, vector signed char a2) 502296263Sobrien{ 502396263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 502496263Sobrien} 502596263Sobrien 502696263Sobrieninline int 502796263Sobrienvec_any_eq (vector unsigned char a1, vector signed char a2) 502896263Sobrien{ 502996263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 503096263Sobrien} 503196263Sobrien 503296263Sobrieninline int 503396263Sobrienvec_any_eq (vector unsigned char a1, vector unsigned char a2) 503496263Sobrien{ 503596263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 503696263Sobrien} 503796263Sobrien 503896263Sobrieninline int 503996263Sobrienvec_any_eq (vector signed short a1, vector unsigned short a2) 504096263Sobrien{ 504196263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 504296263Sobrien} 504396263Sobrien 504496263Sobrieninline int 504596263Sobrienvec_any_eq (vector signed short a1, vector signed short a2) 504696263Sobrien{ 504796263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 504896263Sobrien} 504996263Sobrien 505096263Sobrieninline int 505196263Sobrienvec_any_eq (vector unsigned short a1, vector signed short a2) 505296263Sobrien{ 505396263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 505496263Sobrien} 505596263Sobrien 505696263Sobrieninline int 505796263Sobrienvec_any_eq (vector unsigned short a1, vector unsigned short a2) 505896263Sobrien{ 505996263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 506096263Sobrien} 506196263Sobrien 506296263Sobrieninline int 506396263Sobrienvec_any_eq (vector signed int a1, vector unsigned int a2) 506496263Sobrien{ 506596263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 506696263Sobrien} 506796263Sobrien 506896263Sobrieninline int 506996263Sobrienvec_any_eq (vector signed int a1, vector signed int a2) 507096263Sobrien{ 507196263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 507296263Sobrien} 507396263Sobrien 507496263Sobrieninline int 507596263Sobrienvec_any_eq (vector unsigned int a1, vector signed int a2) 507696263Sobrien{ 507796263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 507896263Sobrien} 507996263Sobrien 508096263Sobrieninline int 508196263Sobrienvec_any_eq (vector unsigned int a1, vector unsigned int a2) 508296263Sobrien{ 508396263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 508496263Sobrien} 508596263Sobrien 508696263Sobrieninline int 508796263Sobrienvec_any_eq (vector float a1, vector float a2) 508896263Sobrien{ 508996263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2); 509096263Sobrien} 509196263Sobrien 509296263Sobrien/* vec_any_ge */ 509396263Sobrien 509496263Sobrieninline int 509596263Sobrienvec_any_ge (vector signed char a1, vector unsigned char a2) 509696263Sobrien{ 509796263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 509896263Sobrien} 509996263Sobrien 510096263Sobrieninline int 510196263Sobrienvec_any_ge (vector unsigned char a1, vector signed char a2) 510296263Sobrien{ 510396263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 510496263Sobrien} 510596263Sobrien 510696263Sobrieninline int 510796263Sobrienvec_any_ge (vector unsigned char a1, vector unsigned char a2) 510896263Sobrien{ 510996263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 511096263Sobrien} 511196263Sobrien 511296263Sobrieninline int 511396263Sobrienvec_any_ge (vector signed char a1, vector signed char a2) 511496263Sobrien{ 511596263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); 511696263Sobrien} 511796263Sobrien 511896263Sobrieninline int 511996263Sobrienvec_any_ge (vector signed short a1, vector unsigned short a2) 512096263Sobrien{ 512196263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 512296263Sobrien} 512396263Sobrien 512496263Sobrieninline int 512596263Sobrienvec_any_ge (vector unsigned short a1, vector signed short a2) 512696263Sobrien{ 512796263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 512896263Sobrien} 512996263Sobrien 513096263Sobrieninline int 513196263Sobrienvec_any_ge (vector unsigned short a1, vector unsigned short a2) 513296263Sobrien{ 513396263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 513496263Sobrien} 513596263Sobrien 513696263Sobrieninline int 513796263Sobrienvec_any_ge (vector signed short a1, vector signed short a2) 513896263Sobrien{ 513996263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); 514096263Sobrien} 514196263Sobrien 514296263Sobrieninline int 514396263Sobrienvec_any_ge (vector signed int a1, vector unsigned int a2) 514496263Sobrien{ 514596263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 514696263Sobrien} 514796263Sobrien 514896263Sobrieninline int 514996263Sobrienvec_any_ge (vector unsigned int a1, vector signed int a2) 515096263Sobrien{ 515196263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 515296263Sobrien} 515396263Sobrien 515496263Sobrieninline int 515596263Sobrienvec_any_ge (vector unsigned int a1, vector unsigned int a2) 515696263Sobrien{ 515796263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 515896263Sobrien} 515996263Sobrien 516096263Sobrieninline int 516196263Sobrienvec_any_ge (vector signed int a1, vector signed int a2) 516296263Sobrien{ 516396263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); 516496263Sobrien} 516596263Sobrien 516696263Sobrieninline int 516796263Sobrienvec_any_ge (vector float a1, vector float a2) 516896263Sobrien{ 516996263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2); 517096263Sobrien} 517196263Sobrien 517296263Sobrien/* vec_any_gt */ 517396263Sobrien 517496263Sobrieninline int 517596263Sobrienvec_any_gt (vector signed char a1, vector unsigned char a2) 517696263Sobrien{ 517796263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 517896263Sobrien} 517996263Sobrien 518096263Sobrieninline int 518196263Sobrienvec_any_gt (vector unsigned char a1, vector signed char a2) 518296263Sobrien{ 518396263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 518496263Sobrien} 518596263Sobrien 518696263Sobrieninline int 518796263Sobrienvec_any_gt (vector unsigned char a1, vector unsigned char a2) 518896263Sobrien{ 518996263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 519096263Sobrien} 519196263Sobrien 519296263Sobrieninline int 519396263Sobrienvec_any_gt (vector signed char a1, vector signed char a2) 519496263Sobrien{ 519596263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); 519696263Sobrien} 519796263Sobrien 519896263Sobrieninline int 519996263Sobrienvec_any_gt (vector signed short a1, vector unsigned short a2) 520096263Sobrien{ 520196263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 520296263Sobrien} 520396263Sobrien 520496263Sobrieninline int 520596263Sobrienvec_any_gt (vector unsigned short a1, vector signed short a2) 520696263Sobrien{ 520796263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 520896263Sobrien} 520996263Sobrien 521096263Sobrieninline int 521196263Sobrienvec_any_gt (vector unsigned short a1, vector unsigned short a2) 521296263Sobrien{ 521396263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 521496263Sobrien} 521596263Sobrien 521696263Sobrieninline int 521796263Sobrienvec_any_gt (vector signed short a1, vector signed short a2) 521896263Sobrien{ 521996263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); 522096263Sobrien} 522196263Sobrien 522296263Sobrieninline int 522396263Sobrienvec_any_gt (vector signed int a1, vector unsigned int a2) 522496263Sobrien{ 522596263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 522696263Sobrien} 522796263Sobrien 522896263Sobrieninline int 522996263Sobrienvec_any_gt (vector unsigned int a1, vector signed int a2) 523096263Sobrien{ 523196263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 523296263Sobrien} 523396263Sobrien 523496263Sobrieninline int 523596263Sobrienvec_any_gt (vector unsigned int a1, vector unsigned int a2) 523696263Sobrien{ 523796263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 523896263Sobrien} 523996263Sobrien 524096263Sobrieninline int 524196263Sobrienvec_any_gt (vector signed int a1, vector signed int a2) 524296263Sobrien{ 524396263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); 524496263Sobrien} 524596263Sobrien 524696263Sobrieninline int 524796263Sobrienvec_any_gt (vector float a1, vector float a2) 524896263Sobrien{ 524996263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2); 525096263Sobrien} 525196263Sobrien 525296263Sobrien/* vec_any_le */ 525396263Sobrien 525496263Sobrieninline int 525596263Sobrienvec_any_le (vector signed char a1, vector unsigned char a2) 525696263Sobrien{ 525796263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 525896263Sobrien} 525996263Sobrien 526096263Sobrieninline int 526196263Sobrienvec_any_le (vector unsigned char a1, vector signed char a2) 526296263Sobrien{ 526396263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 526496263Sobrien} 526596263Sobrien 526696263Sobrieninline int 526796263Sobrienvec_any_le (vector unsigned char a1, vector unsigned char a2) 526896263Sobrien{ 526996263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 527096263Sobrien} 527196263Sobrien 527296263Sobrieninline int 527396263Sobrienvec_any_le (vector signed char a1, vector signed char a2) 527496263Sobrien{ 527596263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 527696263Sobrien} 527796263Sobrien 527896263Sobrieninline int 527996263Sobrienvec_any_le (vector signed short a1, vector unsigned short a2) 528096263Sobrien{ 528196263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 528296263Sobrien} 528396263Sobrien 528496263Sobrieninline int 528596263Sobrienvec_any_le (vector unsigned short a1, vector signed short a2) 528696263Sobrien{ 528796263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 528896263Sobrien} 528996263Sobrien 529096263Sobrieninline int 529196263Sobrienvec_any_le (vector unsigned short a1, vector unsigned short a2) 529296263Sobrien{ 529396263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 529496263Sobrien} 529596263Sobrien 529696263Sobrieninline int 529796263Sobrienvec_any_le (vector signed short a1, vector signed short a2) 529896263Sobrien{ 529996263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 530096263Sobrien} 530196263Sobrien 530296263Sobrieninline int 530396263Sobrienvec_any_le (vector signed int a1, vector unsigned int a2) 530496263Sobrien{ 530596263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 530696263Sobrien} 530796263Sobrien 530896263Sobrieninline int 530996263Sobrienvec_any_le (vector unsigned int a1, vector signed int a2) 531096263Sobrien{ 531196263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 531296263Sobrien} 531396263Sobrien 531496263Sobrieninline int 531596263Sobrienvec_any_le (vector unsigned int a1, vector unsigned int a2) 531696263Sobrien{ 531796263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 531896263Sobrien} 531996263Sobrien 532096263Sobrieninline int 532196263Sobrienvec_any_le (vector signed int a1, vector signed int a2) 532296263Sobrien{ 532396263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 532496263Sobrien} 532596263Sobrien 532696263Sobrieninline int 532796263Sobrienvec_any_le (vector float a1, vector float a2) 532896263Sobrien{ 532996263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); 533096263Sobrien} 533196263Sobrien 533296263Sobrien/* vec_any_lt */ 533396263Sobrien 533496263Sobrieninline int 533596263Sobrienvec_any_lt (vector signed char a1, vector unsigned char a2) 533696263Sobrien{ 533796263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 533896263Sobrien} 533996263Sobrien 534096263Sobrieninline int 534196263Sobrienvec_any_lt (vector unsigned char a1, vector signed char a2) 534296263Sobrien{ 534396263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 534496263Sobrien} 534596263Sobrien 534696263Sobrieninline int 534796263Sobrienvec_any_lt (vector unsigned char a1, vector unsigned char a2) 534896263Sobrien{ 534996263Sobrien return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 535096263Sobrien} 535196263Sobrien 535296263Sobrieninline int 535396263Sobrienvec_any_lt (vector signed char a1, vector signed char a2) 535496263Sobrien{ 535596263Sobrien return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); 535696263Sobrien} 535796263Sobrien 535896263Sobrieninline int 535996263Sobrienvec_any_lt (vector signed short a1, vector unsigned short a2) 536096263Sobrien{ 536196263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 536296263Sobrien} 536396263Sobrien 536496263Sobrieninline int 536596263Sobrienvec_any_lt (vector unsigned short a1, vector signed short a2) 536696263Sobrien{ 536796263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 536896263Sobrien} 536996263Sobrien 537096263Sobrieninline int 537196263Sobrienvec_any_lt (vector unsigned short a1, vector unsigned short a2) 537296263Sobrien{ 537396263Sobrien return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 537496263Sobrien} 537596263Sobrien 537696263Sobrieninline int 537796263Sobrienvec_any_lt (vector signed short a1, vector signed short a2) 537896263Sobrien{ 537996263Sobrien return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); 538096263Sobrien} 538196263Sobrien 538296263Sobrieninline int 538396263Sobrienvec_any_lt (vector signed int a1, vector unsigned int a2) 538496263Sobrien{ 538596263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 538696263Sobrien} 538796263Sobrien 538896263Sobrieninline int 538996263Sobrienvec_any_lt (vector unsigned int a1, vector signed int a2) 539096263Sobrien{ 539196263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 539296263Sobrien} 539396263Sobrien 539496263Sobrieninline int 539596263Sobrienvec_any_lt (vector unsigned int a1, vector unsigned int a2) 539696263Sobrien{ 539796263Sobrien return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 539896263Sobrien} 539996263Sobrien 540096263Sobrieninline int 540196263Sobrienvec_any_lt (vector signed int a1, vector signed int a2) 540296263Sobrien{ 540396263Sobrien return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); 540496263Sobrien} 540596263Sobrien 540696263Sobrieninline int 540796263Sobrienvec_any_lt (vector float a1, vector float a2) 540896263Sobrien{ 540996263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1); 541096263Sobrien} 541196263Sobrien 541296263Sobrien/* vec_any_nan */ 541396263Sobrien 541496263Sobrieninline int 541596263Sobrienvec_any_nan (vector float a1) 541696263Sobrien{ 541796263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1); 541896263Sobrien} 541996263Sobrien 542096263Sobrien/* vec_any_ne */ 542196263Sobrien 542296263Sobrieninline int 542396263Sobrienvec_any_ne (vector signed char a1, vector unsigned char a2) 542496263Sobrien{ 542596263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 542696263Sobrien} 542796263Sobrien 542896263Sobrieninline int 542996263Sobrienvec_any_ne (vector signed char a1, vector signed char a2) 543096263Sobrien{ 543196263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 543296263Sobrien} 543396263Sobrien 543496263Sobrieninline int 543596263Sobrienvec_any_ne (vector unsigned char a1, vector signed char a2) 543696263Sobrien{ 543796263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 543896263Sobrien} 543996263Sobrien 544096263Sobrieninline int 544196263Sobrienvec_any_ne (vector unsigned char a1, vector unsigned char a2) 544296263Sobrien{ 544396263Sobrien return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); 544496263Sobrien} 544596263Sobrien 544696263Sobrieninline int 544796263Sobrienvec_any_ne (vector signed short a1, vector unsigned short a2) 544896263Sobrien{ 544996263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 545096263Sobrien} 545196263Sobrien 545296263Sobrieninline int 545396263Sobrienvec_any_ne (vector signed short a1, vector signed short a2) 545496263Sobrien{ 545596263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 545696263Sobrien} 545796263Sobrien 545896263Sobrieninline int 545996263Sobrienvec_any_ne (vector unsigned short a1, vector signed short a2) 546096263Sobrien{ 546196263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 546296263Sobrien} 546396263Sobrien 546496263Sobrieninline int 546596263Sobrienvec_any_ne (vector unsigned short a1, vector unsigned short a2) 546696263Sobrien{ 546796263Sobrien return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); 546896263Sobrien} 546996263Sobrien 547096263Sobrieninline int 547196263Sobrienvec_any_ne (vector signed int a1, vector unsigned int a2) 547296263Sobrien{ 547396263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 547496263Sobrien} 547596263Sobrien 547696263Sobrieninline int 547796263Sobrienvec_any_ne (vector signed int a1, vector signed int a2) 547896263Sobrien{ 547996263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 548096263Sobrien} 548196263Sobrien 548296263Sobrieninline int 548396263Sobrienvec_any_ne (vector unsigned int a1, vector signed int a2) 548496263Sobrien{ 548596263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 548696263Sobrien} 548796263Sobrien 548896263Sobrieninline int 548996263Sobrienvec_any_ne (vector unsigned int a1, vector unsigned int a2) 549096263Sobrien{ 549196263Sobrien return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); 549296263Sobrien} 549396263Sobrien 549496263Sobrieninline int 549596263Sobrienvec_any_ne (vector float a1, vector float a2) 549696263Sobrien{ 549796263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2); 549896263Sobrien} 549996263Sobrien 550096263Sobrien/* vec_any_nge */ 550196263Sobrien 550296263Sobrieninline int 550396263Sobrienvec_any_nge (vector float a1, vector float a2) 550496263Sobrien{ 550596263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2); 550696263Sobrien} 550796263Sobrien 550896263Sobrien/* vec_any_ngt */ 550996263Sobrien 551096263Sobrieninline int 551196263Sobrienvec_any_ngt (vector float a1, vector float a2) 551296263Sobrien{ 551396263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2); 551496263Sobrien} 551596263Sobrien 551696263Sobrien/* vec_any_nle */ 551796263Sobrien 551896263Sobrieninline int 551996263Sobrienvec_any_nle (vector float a1, vector float a2) 552096263Sobrien{ 552196263Sobrien return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); 552296263Sobrien} 552396263Sobrien 552496263Sobrien/* vec_any_nlt */ 552596263Sobrien 552696263Sobrieninline int 552796263Sobrienvec_any_nlt (vector float a1, vector float a2) 552896263Sobrien{ 552996263Sobrien return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1); 553096263Sobrien} 553196263Sobrien 553296263Sobrien/* vec_any_numeric */ 553396263Sobrien 553496263Sobrieninline int 553596263Sobrienvec_any_numeric (vector float a1) 553696263Sobrien{ 553796263Sobrien return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1); 553896263Sobrien} 553996263Sobrien 554096263Sobrien/* vec_any_out */ 554196263Sobrien 554296263Sobrieninline int 554396263Sobrienvec_any_out (vector float a1, vector float a2) 554496263Sobrien{ 554596263Sobrien return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2); 554696263Sobrien} 554796263Sobrien 554896263Sobrien/* vec_step */ 554996263Sobrien 555096263Sobrientemplate<typename _Tp> 555196263Sobrienstruct __vec_step_help 555296263Sobrien{ 555396263Sobrien // All proper vector types will specialize _S_elem. 555496263Sobrien}; 555596263Sobrien 555696263Sobrientemplate<> 555796263Sobrienstruct __vec_step_help<vector signed short> 555896263Sobrien{ 555996263Sobrien static const int _S_elem = 8; 556096263Sobrien}; 556196263Sobrien 556296263Sobrientemplate<> 556396263Sobrienstruct __vec_step_help<vector unsigned short> 556496263Sobrien{ 556596263Sobrien static const int _S_elem = 8; 556696263Sobrien}; 556796263Sobrien 556896263Sobrientemplate<> 556996263Sobrienstruct __vec_step_help<vector signed int> 557096263Sobrien{ 557196263Sobrien static const int _S_elem = 4; 557296263Sobrien}; 557396263Sobrien 557496263Sobrientemplate<> 557596263Sobrienstruct __vec_step_help<vector unsigned int> 557696263Sobrien{ 557796263Sobrien static const int _S_elem = 4; 557896263Sobrien}; 557996263Sobrien 558096263Sobrientemplate<> 558196263Sobrienstruct __vec_step_help<vector unsigned char> 558296263Sobrien{ 558396263Sobrien static const int _S_elem = 16; 558496263Sobrien}; 558596263Sobrien 558696263Sobrientemplate<> 558796263Sobrienstruct __vec_step_help<vector signed char> 558896263Sobrien{ 558996263Sobrien static const int _S_elem = 16; 559096263Sobrien}; 559196263Sobrien 559296263Sobrientemplate<> 559396263Sobrienstruct __vec_step_help<vector float> 559496263Sobrien{ 559596263Sobrien static const int _S_elem = 4; 559696263Sobrien}; 559796263Sobrien 559896263Sobrien#define vec_step(t) __vec_step_help<t>::_S_elem 559996263Sobrien 560090075Sobrien#else /* not C++ */ 560190075Sobrien 560296263Sobrien/* "... and so I think no man in a century will suffer as greatly as 560396263Sobrien you will." */ 560490075Sobrien 560596263Sobrien#define vec_abs(a) \ 560696263Sobrien __ch (__un_args_eq (vector signed char, (a)), \ 560796263Sobrien ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \ 560896263Sobrien __ch (__un_args_eq (vector signed short, (a)), \ 560996263Sobrien ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \ 561096263Sobrien __ch (__un_args_eq (vector signed int, (a)), \ 561196263Sobrien ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \ 561296263Sobrien __ch (__un_args_eq (vector float, (a)), \ 561396263Sobrien ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \ 561496263Sobrien __altivec_link_error_invalid_argument ())))) 561596263Sobrien 561696263Sobrien#define vec_abss(a) \ 561796263Sobrien __ch (__un_args_eq (vector signed char, (a)), \ 561896263Sobrien ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \ 561996263Sobrien __ch (__un_args_eq (vector signed short, (a)), \ 562096263Sobrien ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \ 562196263Sobrien __ch (__un_args_eq (vector signed int, (a)), \ 562296263Sobrien ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \ 562396263Sobrien __altivec_link_error_invalid_argument ()))) 562496263Sobrien 562596263Sobrien#define vec_step(t) \ 562696263Sobrien __ch (__builtin_types_compatible_p (t, vector signed int), 4, \ 562796263Sobrien __ch (__builtin_types_compatible_p (t, vector unsigned int), 4, \ 562896263Sobrien __ch (__builtin_types_compatible_p (t, vector signed short), 8, \ 562996263Sobrien __ch (__builtin_types_compatible_p (t, vector unsigned short), 8, \ 563096263Sobrien __ch (__builtin_types_compatible_p (t, vector signed char), 16, \ 563196263Sobrien __ch (__builtin_types_compatible_p (t, vector unsigned char), 16, \ 563296263Sobrien __ch (__builtin_types_compatible_p (t, vector float), 4, \ 563396263Sobrien __altivec_link_error_invalid_argument ()))))))) 563496263Sobrien 563596263Sobrien#define vec_vaddubm(a1, a2) \ 563696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 563796263Sobrien ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 563896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 563996263Sobrien ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 564096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 564196263Sobrien ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 564296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 564396263Sobrien ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 564496263Sobrien __altivec_link_error_invalid_argument ())))) 564596263Sobrien 564696263Sobrien#define vec_vadduhm(a1, a2) \ 564796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 564896263Sobrien ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 564996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 565096263Sobrien ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 565196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 565296263Sobrien ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 565396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 565496263Sobrien ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 565596263Sobrien __altivec_link_error_invalid_argument ())))) 565696263Sobrien 565796263Sobrien#define vec_vadduwm(a1, a2) \ 565896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 565996263Sobrien ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 566096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 566196263Sobrien ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 566296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 566396263Sobrien ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 566496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 566596263Sobrien ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 566696263Sobrien __altivec_link_error_invalid_argument ())))) 566796263Sobrien 566896263Sobrien#define vec_vaddfp(a1, a2) \ 566996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 567096263Sobrien ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \ 567196263Sobrien __altivec_link_error_invalid_argument ()) 567296263Sobrien 567390075Sobrien#define vec_add(a1, a2) \ 567496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 567596263Sobrien ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 567696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 567796263Sobrien ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 567896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 567996263Sobrien ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 568096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 568196263Sobrien ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \ 568296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 568396263Sobrien ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 568496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 568596263Sobrien ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 568696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 568796263Sobrien ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 568896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 568996263Sobrien ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \ 569096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 569196263Sobrien ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 569296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 569396263Sobrien ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 569496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 569596263Sobrien ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 569696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 569796263Sobrien ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \ 569896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 569996263Sobrien ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \ 570090075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 570190075Sobrien 570296263Sobrien#define vec_addc(a1, a2) \ 570396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 570496263Sobrien ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \ 570596263Sobrien __altivec_link_error_invalid_argument ()) 570690075Sobrien 570790075Sobrien#define vec_adds(a1, a2) \ 570896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 570996263Sobrien ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 571096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 571196263Sobrien ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 571296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 571396263Sobrien ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 571496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 571596263Sobrien ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 571696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 571796263Sobrien ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 571896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 571996263Sobrien ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 572096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 572196263Sobrien ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 572296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 572396263Sobrien ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \ 572496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 572596263Sobrien ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 572696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 572796263Sobrien ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 572896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 572996263Sobrien ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 573096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 573196263Sobrien ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ 573290075Sobrien __altivec_link_error_invalid_argument ())))))))))))) 573390075Sobrien 573496263Sobrien#define vec_vaddsws(a1, a2) \ 573596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 573696263Sobrien ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ 573796263Sobrien __altivec_link_error_invalid_argument ()) 573896263Sobrien 573996263Sobrien#define vec_vadduws(a1, a2) \ 574096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 574196263Sobrien ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 574296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 574396263Sobrien ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 574496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 574596263Sobrien ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \ 574696263Sobrien __altivec_link_error_invalid_argument ()))) 574796263Sobrien 574896263Sobrien#define vec_vaddshs(a1, a2) \ 574996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 575096263Sobrien ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \ 575196263Sobrien __altivec_link_error_invalid_argument ()) 575296263Sobrien 575396263Sobrien#define vec_vadduhs(a1, a2) \ 575496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 575596263Sobrien ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 575696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 575796263Sobrien ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 575896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 575996263Sobrien ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \ 576096263Sobrien __altivec_link_error_invalid_argument ()))) 576196263Sobrien 576296263Sobrien#define vec_vaddsbs(a1, a2) \ 576396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 576496263Sobrien ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 576596263Sobrien __altivec_link_error_invalid_argument ()) 576696263Sobrien 576796263Sobrien#define vec_vaddubs(a1, a2) \ 576896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 576996263Sobrien ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 577096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 577196263Sobrien ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 577296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 577396263Sobrien ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \ 577496263Sobrien __altivec_link_error_invalid_argument ()))) 577596263Sobrien 577690075Sobrien#define vec_and(a1, a2) \ 577796263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 577896263Sobrien ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 577996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \ 578096263Sobrien ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 578196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ 578296263Sobrien ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 578396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 578496263Sobrien ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 578596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 578696263Sobrien ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 578796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 578896263Sobrien ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 578996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 579096263Sobrien ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 579196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 579296263Sobrien ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 579396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 579496263Sobrien ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 579596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 579696263Sobrien ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 579796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 579896263Sobrien ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 579996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 580096263Sobrien ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 580196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 580296263Sobrien ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 580396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 580496263Sobrien ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 580596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 580696263Sobrien ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \ 580790075Sobrien __altivec_link_error_invalid_argument ()))))))))))))))) 580890075Sobrien 580990075Sobrien#define vec_andc(a1, a2) \ 581096263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 581196263Sobrien ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 581296263Sobrien__ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \ 581396263Sobrien ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 581496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \ 581596263Sobrien ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 581696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 581796263Sobrien ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 581896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 581996263Sobrien ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 582096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 582196263Sobrien ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 582296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 582396263Sobrien ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 582496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 582596263Sobrien ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 582696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 582796263Sobrien ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 582896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 582996263Sobrien ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 583096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 583196263Sobrien ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 583296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 583396263Sobrien ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 583496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 583596263Sobrien ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 583696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 583796263Sobrien ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 583896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 583996263Sobrien ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 584096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 584196263Sobrien ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 584296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 584396263Sobrien ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 584496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 584596263Sobrien ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 584696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 584796263Sobrien ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 584896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 584996263Sobrien ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 585096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 585196263Sobrien ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 585296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 585396263Sobrien ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \ 585496263Sobrien __altivec_link_error_invalid_argument ())))))))))))))))))))))) 585590075Sobrien 585690075Sobrien#define vec_avg(a1, a2) \ 585796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 585896263Sobrien ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \ 585996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 586096263Sobrien ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \ 586196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 586296263Sobrien ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \ 586396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 586496263Sobrien ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \ 586596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 586696263Sobrien ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \ 586796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 586896263Sobrien ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \ 586990075Sobrien __altivec_link_error_invalid_argument ())))))) 587090075Sobrien 587196263Sobrien#define vec_vavgsw(a1, a2) \ 587296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 587396263Sobrien ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \ 587496263Sobrien __altivec_link_error_invalid_argument ()) 587590075Sobrien 587696263Sobrien#define vec_vavguw(a1, a2) \ 587796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 587896263Sobrien ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \ 587996263Sobrien __altivec_link_error_invalid_argument ()) 588090075Sobrien 588196263Sobrien#define vec_vavgsh(a1, a2) \ 588296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 588396263Sobrien ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \ 588496263Sobrien __altivec_link_error_invalid_argument ()) 588596263Sobrien 588696263Sobrien#define vec_vavguh(a1, a2) \ 588796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 588896263Sobrien ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \ 588996263Sobrien __altivec_link_error_invalid_argument ()) 589096263Sobrien 589196263Sobrien#define vec_vavgsb(a1, a2) \ 589296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 589396263Sobrien ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \ 589496263Sobrien __altivec_link_error_invalid_argument ()) 589596263Sobrien 589696263Sobrien#define vec_vavgub(a1, a2) \ 589796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 589896263Sobrien ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \ 589996263Sobrien __altivec_link_error_invalid_argument ()) 590096263Sobrien 590196263Sobrien#define vec_ceil(a1) __builtin_altivec_vrfip ((a1)) 590296263Sobrien 590396263Sobrien#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2)) 590496263Sobrien 590590075Sobrien#define vec_cmpeq(a1, a2) \ 590696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 590796263Sobrien ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 590896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 590996263Sobrien ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 591096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 591196263Sobrien ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 591296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 591396263Sobrien ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 591496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 591596263Sobrien ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 591696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 591796263Sobrien ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 591896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 591996263Sobrien ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ 592090075Sobrien __altivec_link_error_invalid_argument ()))))))) 592190075Sobrien 592296263Sobrien#define vec_vcmpeqfp(a1, a2) \ 592396263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 592496263Sobrien ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ 592596263Sobrien __altivec_link_error_invalid_argument ()) 592690075Sobrien 592796263Sobrien#define vec_vcmpequw(a1, a2) \ 592896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 592996263Sobrien ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 593096263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 593196263Sobrien ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ 593296263Sobrien __altivec_link_error_invalid_argument ())) 593396263Sobrien 593496263Sobrien#define vec_vcmpequh(a1, a2) \ 593596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 593696263Sobrien ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 593796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 593896263Sobrien ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ 593996263Sobrien __altivec_link_error_invalid_argument ())) 594096263Sobrien 594196263Sobrien#define vec_vcmpequb(a1, a2) \ 594296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 594396263Sobrien ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 594496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 594596263Sobrien ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ 594696263Sobrien __altivec_link_error_invalid_argument ())) 594796263Sobrien 594896263Sobrien#define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2)) 594996263Sobrien 595090075Sobrien#define vec_cmpgt(a1, a2) \ 595196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 595296263Sobrien ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ 595396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 595496263Sobrien ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ 595596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 595696263Sobrien ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ 595796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 595896263Sobrien ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ 595996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 596096263Sobrien ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ 596196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 596296263Sobrien ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ 596396263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 596496263Sobrien ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ 596590075Sobrien __altivec_link_error_invalid_argument ()))))))) 596690075Sobrien 596796263Sobrien#define vec_vcmpgtfp(a1, a2) \ 596896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 596996263Sobrien ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ 597096263Sobrien __altivec_link_error_invalid_argument ()) 597190075Sobrien 597296263Sobrien#define vec_vcmpgtsw(a1, a2) \ 597396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 597496263Sobrien ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ 597596263Sobrien __altivec_link_error_invalid_argument ()) 597696263Sobrien 597796263Sobrien#define vec_vcmpgtuw(a1, a2) \ 597896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 597996263Sobrien ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ 598096263Sobrien __altivec_link_error_invalid_argument ()) 598196263Sobrien 598296263Sobrien#define vec_vcmpgtsh(a1, a2) \ 598396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 598496263Sobrien ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ 598596263Sobrien __altivec_link_error_invalid_argument ()) 598696263Sobrien 598796263Sobrien#define vec_vcmpgtuh(a1, a2) \ 598896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 598996263Sobrien ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ 599096263Sobrien __altivec_link_error_invalid_argument ()) 599196263Sobrien 599296263Sobrien#define vec_vcmpgtsb(a1, a2) \ 599396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 599496263Sobrien ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ 599596263Sobrien __altivec_link_error_invalid_argument ()) 599696263Sobrien 599796263Sobrien#define vec_vcmpgtub(a1, a2) \ 599896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 599996263Sobrien ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ 600096263Sobrien __altivec_link_error_invalid_argument ()) 600196263Sobrien 600296263Sobrien#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2)) 600396263Sobrien 600490075Sobrien#define vec_cmplt(a1, a2) \ 600596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 600696263Sobrien ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ 600796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 600896263Sobrien ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ 600996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 601096263Sobrien ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ 601196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 601296263Sobrien ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ 601396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 601496263Sobrien ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ 601596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 601696263Sobrien ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ 601796263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 601896263Sobrien ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ 601990075Sobrien __altivec_link_error_invalid_argument ()))))))) 602090075Sobrien 602190075Sobrien#define vec_ctf(a1, a2) \ 602296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \ 602396263Sobrien ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ 602496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \ 602596263Sobrien ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ 602690075Sobrien __altivec_link_error_invalid_argument ())) 602790075Sobrien 602896263Sobrien#define vec_vcfsx(a1, a2) \ 602996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \ 603096263Sobrien ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \ 603196263Sobrien __altivec_link_error_invalid_argument ()) 603290075Sobrien 603396263Sobrien#define vec_vcfux(a1, a2) \ 603496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \ 603596263Sobrien ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \ 603696263Sobrien __altivec_link_error_invalid_argument ()) 603790075Sobrien 603896263Sobrien#define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2)) 603990075Sobrien 604096263Sobrien#define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2)) 604196263Sobrien 604296263Sobrien#define vec_dss(a1) __builtin_altivec_dss ((a1)) 604396263Sobrien 604490075Sobrien#define vec_dssall() __builtin_altivec_dssall () 604590075Sobrien 604696263Sobrien#define vec_dst(a1, a2, a3) __builtin_altivec_dst ((a1), (a2), (a3)) 604790075Sobrien 604896263Sobrien#define vec_dstst(a1, a2, a3) __builtin_altivec_dstst ((a1), (a2), (a3)) 604990075Sobrien 605096263Sobrien#define vec_dststt(a1, a2, a3) __builtin_altivec_dststt ((a1), (a2), (a3)) 605190075Sobrien 605296263Sobrien#define vec_dstt(a1, a2, a3) __builtin_altivec_dstt ((a1), (a2), (a3)) 605390075Sobrien 605496263Sobrien#define vec_expte(a1) __builtin_altivec_vexptefp ((a1)) 605590075Sobrien 605690075Sobrien#define vec_floor(a1) __builtin_altivec_vrfim (a1) 605790075Sobrien 605890075Sobrien#define vec_ld(a, b) \ 605996263Sobrien__ch (__un_args_eq (vector unsigned char *, (b)), \ 606096263Sobrien ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ 606196263Sobrien__ch (__un_args_eq (vector unsigned char [], (b)), \ 606296263Sobrien ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ 606396263Sobrien__ch (__un_args_eq (unsigned char *, (b)), \ 606496263Sobrien ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ 606596263Sobrien__ch (__un_args_eq (unsigned char [], (b)), \ 606696263Sobrien ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \ 606796263Sobrien__ch (__un_args_eq (vector signed char *, (b)), \ 606896263Sobrien ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ 606996263Sobrien__ch (__un_args_eq (vector signed char [], (b)), \ 607096263Sobrien ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ 607196263Sobrien__ch (__un_args_eq (signed char *, (b)), \ 607296263Sobrien ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ 607396263Sobrien__ch (__un_args_eq (signed char [], (b)), \ 607496263Sobrien ((vector signed char) __builtin_altivec_lvx ((a), (b))), \ 607596263Sobrien__ch (__un_args_eq (vector unsigned short *, (b)), \ 607696263Sobrien ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ 607796263Sobrien__ch (__un_args_eq (vector unsigned short [], (b)), \ 607896263Sobrien ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ 607996263Sobrien__ch (__un_args_eq (unsigned short *, (b)), \ 608096263Sobrien ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ 608196263Sobrien__ch (__un_args_eq (unsigned short [], (b)), \ 608296263Sobrien ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \ 608396263Sobrien__ch (__un_args_eq (vector signed short *, (b)), \ 608496263Sobrien ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ 608596263Sobrien__ch (__un_args_eq (vector signed short [], (b)), \ 608696263Sobrien ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ 608796263Sobrien__ch (__un_args_eq (signed short *, (b)), \ 608896263Sobrien ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ 608996263Sobrien__ch (__un_args_eq (signed short [], (b)), \ 609096263Sobrien ((vector signed short) __builtin_altivec_lvx ((a), (b))), \ 609196263Sobrien__ch (__un_args_eq (vector unsigned int *, (b)), \ 609296263Sobrien ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 609396263Sobrien__ch (__un_args_eq (vector unsigned int [], (b)), \ 609496263Sobrien ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 609596263Sobrien__ch (__un_args_eq (unsigned int *, (b)), \ 609696263Sobrien ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 609796263Sobrien__ch (__un_args_eq (unsigned int [], (b)), \ 609896263Sobrien ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \ 609996263Sobrien__ch (__un_args_eq (vector signed int *, (b)), \ 610096263Sobrien ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 610196263Sobrien__ch (__un_args_eq (vector signed int [], (b)), \ 610296263Sobrien ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 610396263Sobrien__ch (__un_args_eq (signed int *, (b)), \ 610496263Sobrien ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 610596263Sobrien__ch (__un_args_eq (signed int [], (b)), \ 610696263Sobrien ((vector signed int) __builtin_altivec_lvx ((a), (b))), \ 610796263Sobrien__ch (__un_args_eq (vector float *, (b)), \ 610896263Sobrien ((vector float) __builtin_altivec_lvx ((a), (b))), \ 610996263Sobrien__ch (__un_args_eq (vector float [], (b)), \ 611096263Sobrien ((vector float) __builtin_altivec_lvx ((a), (b))), \ 611196263Sobrien__ch (__un_args_eq (float *, (b)), \ 611296263Sobrien ((vector float) __builtin_altivec_lvx ((a), (b))), \ 611396263Sobrien__ch (__un_args_eq (float [], (b)), \ 611496263Sobrien ((vector float) __builtin_altivec_lvx ((a), (b))), \ 611596263Sobrien__altivec_link_error_invalid_argument ())))))))))))))))))))))))))))) 611696263Sobrien 611796263Sobrien#define vec_lde(a, b) \ 611896263Sobrien__ch (__un_args_eq (unsigned char *, (b)), \ 611996263Sobrien ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ 612096263Sobrien__ch (__un_args_eq (unsigned char [], (b)), \ 612196263Sobrien ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ 612296263Sobrien__ch (__un_args_eq (signed char *, (b)), \ 612396263Sobrien ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ 612496263Sobrien__ch (__un_args_eq (signed char [], (b)), \ 612596263Sobrien ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ 612696263Sobrien__ch (__un_args_eq (unsigned short *, (b)), \ 612796263Sobrien ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ 612896263Sobrien__ch (__un_args_eq (unsigned short [], (b)), \ 612996263Sobrien ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ 613096263Sobrien__ch (__un_args_eq (signed short *, (b)), \ 613196263Sobrien ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ 613296263Sobrien__ch (__un_args_eq (signed short [], (b)), \ 613396263Sobrien ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ 613496263Sobrien__ch (__un_args_eq (unsigned int *, (b)), \ 613596263Sobrien ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 613696263Sobrien__ch (__un_args_eq (unsigned int [], (b)), \ 613796263Sobrien ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 613896263Sobrien__ch (__un_args_eq (signed int *, (b)), \ 613996263Sobrien ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 614096263Sobrien__ch (__un_args_eq (signed int [], (b)), \ 614196263Sobrien ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 614296263Sobrien__ch (__un_args_eq (float *, (b)), \ 614396263Sobrien ((vector float) __builtin_altivec_lvewx ((a), (b))), \ 614496263Sobrien__ch (__un_args_eq (float [], (b)), \ 614596263Sobrien ((vector float) __builtin_altivec_lvewx ((a), (b))), \ 614690075Sobrien__altivec_link_error_invalid_argument ())))))))))))))) 614790075Sobrien 614896263Sobrien#define vec_lvewx(a, b) \ 614996263Sobrien__ch (__un_args_eq (unsigned int *, (b)), \ 615096263Sobrien ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 615196263Sobrien__ch (__un_args_eq (unsigned int [], (b)), \ 615296263Sobrien ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \ 615396263Sobrien__ch (__un_args_eq (signed int *, (b)), \ 615496263Sobrien ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 615596263Sobrien__ch (__un_args_eq (signed int [], (b)), \ 615696263Sobrien ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \ 615796263Sobrien__ch (__un_args_eq (float *, (b)), \ 615896263Sobrien ((vector float) __builtin_altivec_lvewx ((a), (b))), \ 615996263Sobrien__ch (__un_args_eq (float [], (b)), \ 616096263Sobrien ((vector float) __builtin_altivec_lvewx ((a), (b))), \ 616190075Sobrien__altivec_link_error_invalid_argument ())))))) 616290075Sobrien 616396263Sobrien#define vec_lvehx(a, b) \ 616496263Sobrien__ch (__un_args_eq (unsigned short *, (b)), \ 616596263Sobrien ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ 616696263Sobrien__ch (__un_args_eq (unsigned short [], (b)), \ 616796263Sobrien ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \ 616896263Sobrien__ch (__un_args_eq (signed short *, (b)), \ 616996263Sobrien ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ 617096263Sobrien__ch (__un_args_eq (signed short [], (b)), \ 617196263Sobrien ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \ 617296263Sobrien__altivec_link_error_invalid_argument ())))) 617396263Sobrien 617496263Sobrien#define vec_lvebx(a, b) \ 617596263Sobrien__ch (__un_args_eq (unsigned char *, (b)), \ 617696263Sobrien ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ 617796263Sobrien__ch (__un_args_eq (unsigned char [], (b)), \ 617896263Sobrien ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \ 617996263Sobrien__ch (__un_args_eq (signed char *, (b)), \ 618096263Sobrien ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ 618196263Sobrien__ch (__un_args_eq (signed char [], (b)), \ 618296263Sobrien ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \ 618396263Sobrien__altivec_link_error_invalid_argument ())))) 618496263Sobrien 618590075Sobrien#define vec_ldl(a, b) \ 618696263Sobrien__ch (__un_args_eq (vector unsigned char *, (b)), \ 618796263Sobrien ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ 618896263Sobrien__ch (__un_args_eq (vector unsigned char [], (b)), \ 618996263Sobrien ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ 619096263Sobrien__ch (__un_args_eq (unsigned char *, (b)), \ 619196263Sobrien ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ 619296263Sobrien__ch (__un_args_eq (unsigned char [], (b)), \ 619396263Sobrien ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \ 619496263Sobrien__ch (__un_args_eq (vector signed char *, (b)), \ 619596263Sobrien ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ 619696263Sobrien__ch (__un_args_eq (vector signed char [], (b)), \ 619796263Sobrien ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ 619896263Sobrien__ch (__un_args_eq (signed char *, (b)), \ 619996263Sobrien ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ 620096263Sobrien__ch (__un_args_eq (signed char [], (b)), \ 620196263Sobrien ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \ 620296263Sobrien__ch (__un_args_eq (vector unsigned short *, (b)), \ 620396263Sobrien ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ 620496263Sobrien__ch (__un_args_eq (vector unsigned short [], (b)), \ 620596263Sobrien ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ 620696263Sobrien__ch (__un_args_eq (unsigned short *, (b)), \ 620796263Sobrien ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ 620896263Sobrien__ch (__un_args_eq (unsigned short [], (b)), \ 620996263Sobrien ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \ 621096263Sobrien__ch (__un_args_eq (vector signed short *, (b)), \ 621196263Sobrien ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ 621296263Sobrien__ch (__un_args_eq (vector signed short [], (b)), \ 621396263Sobrien ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ 621496263Sobrien__ch (__un_args_eq (signed short *, (b)), \ 621596263Sobrien ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ 621696263Sobrien__ch (__un_args_eq (signed short [], (b)), \ 621796263Sobrien ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \ 621896263Sobrien__ch (__un_args_eq (vector unsigned int *, (b)), \ 621996263Sobrien ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 622096263Sobrien__ch (__un_args_eq (vector unsigned int [], (b)), \ 622196263Sobrien ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 622296263Sobrien__ch (__un_args_eq (unsigned int *, (b)), \ 622396263Sobrien ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 622496263Sobrien__ch (__un_args_eq (unsigned int [], (b)), \ 622596263Sobrien ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \ 622696263Sobrien__ch (__un_args_eq (vector signed int *, (b)), \ 622796263Sobrien ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 622896263Sobrien__ch (__un_args_eq (vector signed int [], (b)), \ 622996263Sobrien ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 623096263Sobrien__ch (__un_args_eq (signed int *, (b)), \ 623196263Sobrien ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 623296263Sobrien__ch (__un_args_eq (signed int [], (b)), \ 623396263Sobrien ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \ 623496263Sobrien__ch (__un_args_eq (vector float *, (b)), \ 623596263Sobrien ((vector float) __builtin_altivec_lvxl ((a), (b))), \ 623696263Sobrien__ch (__un_args_eq (vector float [], (b)), \ 623796263Sobrien ((vector float) __builtin_altivec_lvxl ((a), (b))), \ 623896263Sobrien__ch (__un_args_eq (float *, (b)), \ 623996263Sobrien ((vector float) __builtin_altivec_lvxl ((a), (b))), \ 624096263Sobrien__ch (__un_args_eq (float [], (b)), \ 624196263Sobrien ((vector float) __builtin_altivec_lvxl ((a), (b))), \ 624296263Sobrien__altivec_link_error_invalid_argument ())))))))))))))))))))))))))))) 624390075Sobrien 624496263Sobrien#define vec_loge(a1) __builtin_altivec_vlogefp ((a1)) 624590075Sobrien 624696263Sobrien#define vec_lvsl(a1, a2) ((vector unsigned char) __builtin_altivec_lvsl ((a1), (a2))) 624790075Sobrien 624896263Sobrien#define vec_lvsr(a1, a2) ((vector unsigned char) __builtin_altivec_lvsr ((a1), (a2))) 624990075Sobrien 625096263Sobrien#define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3))) 625190075Sobrien 625296263Sobrien#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3)) 625390075Sobrien 625490075Sobrien#define vec_max(a1, a2) \ 625596263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 625696263Sobrien ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 625796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 625896263Sobrien ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 625996263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 626096263Sobrien ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 626196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 626296263Sobrien ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \ 626396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 626496263Sobrien ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 626596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 626696263Sobrien ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 626796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 626896263Sobrien ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 626996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 627096263Sobrien ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \ 627196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 627296263Sobrien ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 627396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 627496263Sobrien ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 627596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 627696263Sobrien ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 627796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 627896263Sobrien ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ 627996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 628096263Sobrien ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \ 628190075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 628290075Sobrien 628396263Sobrien#define vec_vmaxfp(a1, a2) \ 628496263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 628596263Sobrien ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \ 628696263Sobrien__altivec_link_error_invalid_argument ()) 628796263Sobrien 628896263Sobrien#define vec_vmaxsw(a1, a2) \ 628996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 629096263Sobrien ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ 629196263Sobrien__altivec_link_error_invalid_argument ()) 629296263Sobrien 629396263Sobrien#define vec_vmaxuw(a1, a2) \ 629496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 629596263Sobrien ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 629696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 629796263Sobrien ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 629896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 629996263Sobrien ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \ 630096263Sobrien__altivec_link_error_invalid_argument ()))) 630196263Sobrien 630296263Sobrien#define vec_vmaxsh(a1, a2) \ 630396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 630496263Sobrien ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \ 630596263Sobrien__altivec_link_error_invalid_argument ()) 630696263Sobrien 630796263Sobrien#define vec_vmaxuh(a1, a2) \ 630896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 630996263Sobrien ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 631096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 631196263Sobrien ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 631296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 631396263Sobrien ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \ 631496263Sobrien__altivec_link_error_invalid_argument ()))) 631596263Sobrien 631696263Sobrien#define vec_vmaxsb(a1, a2) \ 631796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 631896263Sobrien ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \ 631996263Sobrien__altivec_link_error_invalid_argument ()) 632096263Sobrien 632196263Sobrien#define vec_vmaxub(a1, a2) \ 632296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 632396263Sobrien ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 632496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 632596263Sobrien ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 632696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 632796263Sobrien ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \ 632896263Sobrien__altivec_link_error_invalid_argument ()))) 632996263Sobrien 633090075Sobrien#define vec_mergeh(a1, a2) \ 633196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 633296263Sobrien ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 633396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 633496263Sobrien ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 633596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 633696263Sobrien ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 633796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 633896263Sobrien ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 633996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 634096263Sobrien ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 634196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 634296263Sobrien ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 634396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 634496263Sobrien ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 634590075Sobrien __altivec_link_error_invalid_argument ()))))))) 634690075Sobrien 634796263Sobrien#define vec_vmrghw(a1, a2) \ 634896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 634996263Sobrien ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 635096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 635196263Sobrien ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 635296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 635396263Sobrien ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \ 635496263Sobrien__altivec_link_error_invalid_argument ()))) 635596263Sobrien 635696263Sobrien#define vec_vmrghh(a1, a2) \ 635796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 635896263Sobrien ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 635996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 636096263Sobrien ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ 636196263Sobrien__altivec_link_error_invalid_argument ())) 636296263Sobrien 636396263Sobrien#define vec_vmrghb(a1, a2) \ 636496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 636596263Sobrien ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 636696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 636796263Sobrien ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \ 636896263Sobrien__altivec_link_error_invalid_argument ())) 636996263Sobrien 637090075Sobrien#define vec_mergel(a1, a2) \ 637196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 637296263Sobrien ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 637396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 637496263Sobrien ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 637596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 637696263Sobrien ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 637796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 637896263Sobrien ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 637996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 638096263Sobrien ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 638196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 638296263Sobrien ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 638396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 638496263Sobrien ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 638590075Sobrien __altivec_link_error_invalid_argument ()))))))) 638690075Sobrien 638796263Sobrien#define vec_vmrglw(a1, a2) \ 638896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 638996263Sobrien ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 639096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 639196263Sobrien ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 639296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 639396263Sobrien ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ 639496263Sobrien__altivec_link_error_invalid_argument ()))) 639590075Sobrien 639696263Sobrien#define vec_vmrglh(a1, a2) \ 639796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 639896263Sobrien ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 639996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 640096263Sobrien ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ 640196263Sobrien__altivec_link_error_invalid_argument ())) 640296263Sobrien 640396263Sobrien#define vec_vmrglb(a1, a2) \ 640496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 640596263Sobrien ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 640696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 640796263Sobrien ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \ 640896263Sobrien__altivec_link_error_invalid_argument ())) 640996263Sobrien 641096263Sobrien#define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ())) 641196263Sobrien 641290075Sobrien#define vec_min(a1, a2) \ 641396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 641496263Sobrien ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 641596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 641696263Sobrien ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 641796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 641896263Sobrien ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 641996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 642096263Sobrien ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \ 642196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 642296263Sobrien ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 642396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 642496263Sobrien ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 642596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 642696263Sobrien ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 642796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 642896263Sobrien ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \ 642996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 643096263Sobrien ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 643196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 643296263Sobrien ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 643396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 643496263Sobrien ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 643596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 643696263Sobrien ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ 643796263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 643896263Sobrien ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \ 643990075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 644090075Sobrien 644196263Sobrien#define vec_vminfp(a1, a2) \ 644296263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 644396263Sobrien ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \ 644496263Sobrien__altivec_link_error_invalid_argument ()) 644596263Sobrien 644696263Sobrien#define vec_vminsw(a1, a2) \ 644796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 644896263Sobrien ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ 644996263Sobrien__altivec_link_error_invalid_argument ()) 645096263Sobrien 645196263Sobrien#define vec_vminuw(a1, a2) \ 645296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 645396263Sobrien ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 645496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 645596263Sobrien ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 645696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 645796263Sobrien ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \ 645896263Sobrien__altivec_link_error_invalid_argument ()))) 645996263Sobrien 646096263Sobrien#define vec_vminsh(a1, a2) \ 646196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 646296263Sobrien ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \ 646396263Sobrien__altivec_link_error_invalid_argument ()) 646496263Sobrien 646596263Sobrien#define vec_vminuh(a1, a2) \ 646696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 646796263Sobrien ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 646896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 646996263Sobrien ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 647096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 647196263Sobrien ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \ 647296263Sobrien__altivec_link_error_invalid_argument ()))) 647396263Sobrien 647496263Sobrien#define vec_vminsb(a1, a2) \ 647596263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 647696263Sobrien ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \ 647796263Sobrien__altivec_link_error_invalid_argument ()) 647896263Sobrien 647996263Sobrien#define vec_vminub(a1, a2) \ 648096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 648196263Sobrien ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 648296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 648396263Sobrien ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 648496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 648596263Sobrien ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \ 648696263Sobrien__altivec_link_error_invalid_argument ()))) 648796263Sobrien 648890075Sobrien#define vec_mladd(a1, a2, a3) \ 648996263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \ 649096263Sobrien ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 649196263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \ 649296263Sobrien ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 649396263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \ 649496263Sobrien ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 649596263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \ 649696263Sobrien ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \ 649790075Sobrien __altivec_link_error_invalid_argument ())))) 649890075Sobrien 649996263Sobrien#define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3)) 650090075Sobrien 650190075Sobrien#define vec_msum(a1, a2, a3) \ 650296263Sobrien__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \ 650396263Sobrien ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 650496263Sobrien__ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \ 650596263Sobrien ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 650696263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 650796263Sobrien ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 650896263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 650996263Sobrien ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 651090075Sobrien __altivec_link_error_invalid_argument ())))) 651190075Sobrien 651296263Sobrien#define vec_vmsumshm(a1, a2, a3) \ 651396263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 651496263Sobrien ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 651596263Sobrien__altivec_link_error_invalid_argument ()) 651696263Sobrien 651796263Sobrien#define vec_vmsumuhm(a1, a2, a3) \ 651896263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 651996263Sobrien ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 652096263Sobrien__altivec_link_error_invalid_argument ()) 652196263Sobrien 652296263Sobrien#define vec_vmsummbm(a1, a2, a3) \ 652396263Sobrien__ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \ 652496263Sobrien ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 652596263Sobrien__altivec_link_error_invalid_argument ()) 652696263Sobrien 652796263Sobrien#define vec_msumubm(a1, a2, a3) \ 652896263Sobrien__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \ 652996263Sobrien ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \ 653096263Sobrien__altivec_link_error_invalid_argument ()) 653196263Sobrien 653290075Sobrien#define vec_msums(a1, a2, a3) \ 653396263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 653496263Sobrien ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 653596263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 653696263Sobrien ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 653790075Sobrien __altivec_link_error_invalid_argument ())) 653890075Sobrien 653996263Sobrien#define vec_vmsumshs(a1, a2, a3) \ 654096263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \ 654196263Sobrien ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 654296263Sobrien__altivec_link_error_invalid_argument ()) 654396263Sobrien 654496263Sobrien#define vec_vmsumuhs(a1, a2, a3) \ 654596263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \ 654696263Sobrien ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \ 654796263Sobrien__altivec_link_error_invalid_argument ()) 654896263Sobrien 654990075Sobrien#define vec_mtvscr(a1) \ 655096263Sobrien__ch (__un_args_eq (vector signed int, (a1)), \ 655196263Sobrien __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 655296263Sobrien__ch (__un_args_eq (vector unsigned int, (a1)), \ 655396263Sobrien __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 655496263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 655596263Sobrien __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 655696263Sobrien__ch (__un_args_eq (vector unsigned short, (a1)), \ 655796263Sobrien __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 655896263Sobrien__ch (__un_args_eq (vector signed char, (a1)), \ 655996263Sobrien __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 656096263Sobrien__ch (__un_args_eq (vector unsigned char, (a1)), \ 656196263Sobrien __builtin_altivec_mtvscr ((vector signed int) (a1)), \ 656290075Sobrien __altivec_link_error_invalid_argument ())))))) 656390075Sobrien 656490075Sobrien#define vec_mule(a1, a2) \ 656596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 656696263Sobrien ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \ 656796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 656896263Sobrien ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \ 656996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 657096263Sobrien ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \ 657196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 657296263Sobrien ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \ 657390075Sobrien __altivec_link_error_invalid_argument ())))) 657490075Sobrien 657596263Sobrien#define vec_vmulesh(a1, a2) \ 657696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 657796263Sobrien ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \ 657896263Sobrien__altivec_link_error_invalid_argument ()) 657996263Sobrien 658096263Sobrien#define vec_vmuleuh(a1, a2) \ 658196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 658296263Sobrien ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \ 658396263Sobrien__altivec_link_error_invalid_argument ()) 658496263Sobrien 658596263Sobrien#define vec_vmulesb(a1, a2) \ 658696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 658796263Sobrien ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \ 658896263Sobrien__altivec_link_error_invalid_argument ()) 658996263Sobrien 659096263Sobrien#define vec_vmuleub(a1, a2) \ 659196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 659296263Sobrien ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \ 659396263Sobrien__altivec_link_error_invalid_argument ()) 659496263Sobrien 659590075Sobrien#define vec_mulo(a1, a2) \ 659696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 659796263Sobrien ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \ 659896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 659996263Sobrien ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \ 660096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 660196263Sobrien ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \ 660296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 660396263Sobrien ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \ 660490075Sobrien __altivec_link_error_invalid_argument ())))) 660590075Sobrien 660696263Sobrien#define vec_vmulosh(a1, a2) \ 660796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 660896263Sobrien ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \ 660996263Sobrien__altivec_link_error_invalid_argument ()) 661090075Sobrien 661196263Sobrien#define vec_vmulouh(a1, a2) \ 661296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 661396263Sobrien ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \ 661496263Sobrien__altivec_link_error_invalid_argument ()) 661596263Sobrien 661696263Sobrien#define vec_mulosb(a1, a2) \ 661796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 661896263Sobrien ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \ 661996263Sobrien__altivec_link_error_invalid_argument ()) 662096263Sobrien 662196263Sobrien#define vec_vmuloub(a1, a2) \ 662296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 662396263Sobrien ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \ 662496263Sobrien__altivec_link_error_invalid_argument ()) 662596263Sobrien 662696263Sobrien#define vec_nmsub(a1, a2, a3) \ 662796263Sobrien__ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \ 662896263Sobrien ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \ 662996263Sobrien __altivec_link_error_invalid_argument ()) 663096263Sobrien 663190075Sobrien#define vec_nor(a1, a2) \ 663296263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 663396263Sobrien ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 663496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 663596263Sobrien ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 663696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 663796263Sobrien ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 663896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 663996263Sobrien ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 664096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 664196263Sobrien ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 664296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 664396263Sobrien ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 664496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 664596263Sobrien ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \ 664690075Sobrien __altivec_link_error_invalid_argument ()))))))) 664790075Sobrien 664890075Sobrien#define vec_or(a1, a2) \ 664996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 665096263Sobrien ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 665196263Sobrien__ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \ 665296263Sobrien ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 665396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \ 665496263Sobrien ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 665596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 665696263Sobrien ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 665796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 665896263Sobrien ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 665996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 666096263Sobrien ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 666196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 666296263Sobrien ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 666396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 666496263Sobrien ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 666596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 666696263Sobrien ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 666796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 666896263Sobrien ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 666996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 667096263Sobrien ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 667196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 667296263Sobrien ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 667396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 667496263Sobrien ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 667596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 667696263Sobrien ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 667796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 667896263Sobrien ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \ 667990075Sobrien __altivec_link_error_invalid_argument ()))))))))))))))) 668090075Sobrien 668190075Sobrien#define vec_pack(a1, a2) \ 668296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 668396263Sobrien ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 668496263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 668596263Sobrien ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 668696263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 668796263Sobrien ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 668896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 668996263Sobrien ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 669090075Sobrien __altivec_link_error_invalid_argument ())))) 669190075Sobrien 669296263Sobrien#define vec_vpkuwum(a1, a2) \ 669396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 669496263Sobrien ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 669596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 669696263Sobrien ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \ 669796263Sobrien__altivec_link_error_invalid_argument ())) 669890075Sobrien 669996263Sobrien#define vec_vpkuhum(a1, a2) \ 670096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 670196263Sobrien ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 670296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 670396263Sobrien ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \ 670496263Sobrien__altivec_link_error_invalid_argument ())) 670596263Sobrien 670696263Sobrien#define vec_packpx(a1, a2) __builtin_altivec_vpkpx ((a1), (a2)) 670796263Sobrien 670890075Sobrien#define vec_packs(a1, a2) \ 670996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 671096263Sobrien ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \ 671196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 671296263Sobrien ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \ 671396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 671496263Sobrien ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \ 671596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 671696263Sobrien ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \ 671790075Sobrien __altivec_link_error_invalid_argument ())))) 671890075Sobrien 671996263Sobrien#define vec_vpkswss(a1, a2) \ 672096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 672196263Sobrien ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \ 672296263Sobrien__altivec_link_error_invalid_argument ()) 672396263Sobrien 672496263Sobrien#define vec_vpkuwus(a1, a2) \ 672596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 672696263Sobrien ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \ 672796263Sobrien__altivec_link_error_invalid_argument ()) 672896263Sobrien 672996263Sobrien#define vec_vpkshss(a1, a2) \ 673096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 673196263Sobrien ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \ 673296263Sobrien__altivec_link_error_invalid_argument ()) 673396263Sobrien 673496263Sobrien#define vec_vpkuhus(a1, a2) \ 673596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 673696263Sobrien ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \ 673796263Sobrien__altivec_link_error_invalid_argument ()) 673896263Sobrien 673990075Sobrien#define vec_packsu(a1, a2) \ 674096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 674196263Sobrien ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \ 674296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 674396263Sobrien ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \ 674496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 674596263Sobrien ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \ 674696263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 674796263Sobrien ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \ 674890075Sobrien __altivec_link_error_invalid_argument ())))) 674990075Sobrien 675096263Sobrien#define vec_vpkswus(a1, a2) \ 675196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 675296263Sobrien ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \ 675396263Sobrien__altivec_link_error_invalid_argument ()) 675496263Sobrien 675596263Sobrien#define vec_vpkshus(a1, a2) \ 675696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 675796263Sobrien ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \ 675896263Sobrien__altivec_link_error_invalid_argument ()) 675996263Sobrien 676096263Sobrien#define vec_perm(a1, a2, a3) \ 676196263Sobrien__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \ 676296263Sobrien ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 676396263Sobrien__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \ 676496263Sobrien ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 676596263Sobrien__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \ 676696263Sobrien ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 676796263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \ 676896263Sobrien ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 676996263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \ 677096263Sobrien ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 677196263Sobrien__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \ 677296263Sobrien ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 677396263Sobrien__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \ 677496263Sobrien ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \ 677590075Sobrien __altivec_link_error_invalid_argument ()))))))) 677690075Sobrien 677796263Sobrien#define vec_re(a1) __builtin_altivec_vrefp ((a1)) 677890075Sobrien 677990075Sobrien#define vec_rl(a1, a2) \ 678096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 678196263Sobrien ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 678296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 678396263Sobrien ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 678496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 678596263Sobrien ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 678696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 678796263Sobrien ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 678896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 678996263Sobrien ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 679096263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 679196263Sobrien ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 679290075Sobrien __altivec_link_error_invalid_argument ())))))) 679390075Sobrien 679496263Sobrien#define vec_vrlw(a1, a2) \ 679596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 679696263Sobrien ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 679796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 679896263Sobrien ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \ 679996263Sobrien__altivec_link_error_invalid_argument ())) 680090075Sobrien 680196263Sobrien#define vec_vrlh(a1, a2) \ 680296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 680396263Sobrien ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 680496263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 680596263Sobrien ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \ 680696263Sobrien__altivec_link_error_invalid_argument ())) 680790075Sobrien 680896263Sobrien#define vec_vrlb(a1, a2) \ 680996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 681096263Sobrien ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 681196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 681296263Sobrien ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \ 681396263Sobrien__altivec_link_error_invalid_argument ())) 681496263Sobrien 681596263Sobrien#define vec_round(a1) __builtin_altivec_vrfin ((a1)) 681696263Sobrien 681796263Sobrien#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1)) 681896263Sobrien 681990075Sobrien#define vec_sel(a1, a2, a3) \ 682096263Sobrien__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \ 682196263Sobrien ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 682296263Sobrien__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \ 682396263Sobrien ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 682496263Sobrien__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \ 682596263Sobrien ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 682696263Sobrien__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \ 682796263Sobrien ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 682896263Sobrien__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \ 682996263Sobrien ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 683096263Sobrien__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \ 683196263Sobrien ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 683296263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \ 683396263Sobrien ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 683496263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \ 683596263Sobrien ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 683696263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \ 683796263Sobrien ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 683896263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \ 683996263Sobrien ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 684096263Sobrien__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \ 684196263Sobrien ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 684296263Sobrien__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \ 684396263Sobrien ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 684496263Sobrien__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \ 684596263Sobrien ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 684696263Sobrien__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \ 684796263Sobrien ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \ 684890075Sobrien __altivec_link_error_invalid_argument ())))))))))))))) 684990075Sobrien 685090075Sobrien#define vec_sl(a1, a2) \ 685196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 685296263Sobrien ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 685396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 685496263Sobrien ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 685596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 685696263Sobrien ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 685796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 685896263Sobrien ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 685996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 686096263Sobrien ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 686196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 686296263Sobrien ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 686390075Sobrien __altivec_link_error_invalid_argument ())))))) 686490075Sobrien 686596263Sobrien#define vec_vslw(a1, a2) \ 686696263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 686796263Sobrien ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 686896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 686996263Sobrien ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \ 687096263Sobrien__altivec_link_error_invalid_argument ())) 687196263Sobrien 687296263Sobrien#define vec_vslh(a1, a2) \ 687396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 687496263Sobrien ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 687596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 687696263Sobrien ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \ 687796263Sobrien__altivec_link_error_invalid_argument ())) 687896263Sobrien 687996263Sobrien#define vec_vslb(a1, a2) \ 688096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 688196263Sobrien ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 688296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 688396263Sobrien ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \ 688496263Sobrien__altivec_link_error_invalid_argument ())) 688596263Sobrien 688690075Sobrien#define vec_sld(a1, a2, a3) \ 688796263Sobrien__ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \ 688896263Sobrien ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 688996263Sobrien__ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \ 689096263Sobrien ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 689196263Sobrien__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \ 689296263Sobrien ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 689396263Sobrien__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \ 689496263Sobrien ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 689596263Sobrien__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \ 689696263Sobrien ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 689796263Sobrien__ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \ 689896263Sobrien ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 689996263Sobrien__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \ 690096263Sobrien ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \ 690190075Sobrien __altivec_link_error_invalid_argument ()))))))) 690290075Sobrien 690390075Sobrien#define vec_sll(a1, a2) \ 690496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 690596263Sobrien ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 690696263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \ 690796263Sobrien ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 690896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 690996263Sobrien ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 691096263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 691196263Sobrien ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 691296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \ 691396263Sobrien ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 691496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 691596263Sobrien ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 691696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \ 691796263Sobrien ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 691896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 691996263Sobrien ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 692096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 692196263Sobrien ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 692296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \ 692396263Sobrien ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 692496263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 692596263Sobrien ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 692696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 692796263Sobrien ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 692896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \ 692996263Sobrien ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 693096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \ 693196263Sobrien ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 693296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 693396263Sobrien ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 693496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 693596263Sobrien ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 693696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \ 693796263Sobrien ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 693896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 693996263Sobrien ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \ 694090075Sobrien __altivec_link_error_invalid_argument ())))))))))))))))))) 694190075Sobrien 694290075Sobrien#define vec_slo(a1, a2) \ 694396263Sobrien__ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \ 694496263Sobrien ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 694596263Sobrien__ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \ 694696263Sobrien ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 694796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \ 694896263Sobrien ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 694996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 695096263Sobrien ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 695196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \ 695296263Sobrien ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 695396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 695496263Sobrien ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 695596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \ 695696263Sobrien ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 695796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 695896263Sobrien ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 695996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \ 696096263Sobrien ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 696196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 696296263Sobrien ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 696396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 696496263Sobrien ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 696596263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 696696263Sobrien ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 696796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 696896263Sobrien ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 696996263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 697096263Sobrien ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \ 697190075Sobrien __altivec_link_error_invalid_argument ())))))))))))))) 697290075Sobrien 697390075Sobrien#define vec_splat(a1, a2) \ 697496263Sobrien__ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \ 697596263Sobrien ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 697696263Sobrien__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \ 697796263Sobrien ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 697896263Sobrien__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \ 697996263Sobrien ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 698096263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \ 698196263Sobrien ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 698296263Sobrien__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \ 698396263Sobrien ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 698496263Sobrien__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \ 698596263Sobrien ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 698696263Sobrien__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \ 698796263Sobrien ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ 698890075Sobrien __altivec_link_error_invalid_argument ()))))))) 698990075Sobrien 699096263Sobrien#define vec_vspltw(a1, a2) \ 699196263Sobrien__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \ 699296263Sobrien ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 699396263Sobrien__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \ 699496263Sobrien ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \ 699596263Sobrien__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \ 699696263Sobrien ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \ 699796263Sobrien__altivec_link_error_invalid_argument ()))) 699890075Sobrien 699996263Sobrien#define vec_vsplth(a1, a2) \ 700096263Sobrien__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \ 700196263Sobrien ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 700296263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \ 700396263Sobrien ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \ 700496263Sobrien__altivec_link_error_invalid_argument ())) 700590075Sobrien 700696263Sobrien#define vec_vspltb(a1, a2) \ 700796263Sobrien__ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \ 700896263Sobrien ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 700996263Sobrien__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \ 701096263Sobrien ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \ 701196263Sobrien__altivec_link_error_invalid_argument ())) 701290075Sobrien 701396263Sobrien#define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1)) 701490075Sobrien 701596263Sobrien#define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1)) 701690075Sobrien 701796263Sobrien#define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1)) 701890075Sobrien 701996263Sobrien#define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1))) 702096263Sobrien 702196263Sobrien#define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1))) 702296263Sobrien 702396263Sobrien#define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1))) 702496263Sobrien 702590075Sobrien#define vec_sr(a1, a2) \ 702696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 702796263Sobrien ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 702896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 702996263Sobrien ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 703096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 703196263Sobrien ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 703296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 703396263Sobrien ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 703496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 703596263Sobrien ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 703696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 703796263Sobrien ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 703890075Sobrien __altivec_link_error_invalid_argument ())))))) 703990075Sobrien 704096263Sobrien#define vec_vsrw(a1, a2) \ 704196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 704296263Sobrien ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 704396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 704496263Sobrien ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \ 704596263Sobrien__altivec_link_error_invalid_argument ())) 704696263Sobrien 704796263Sobrien#define vec_vsrh(a1, a2) \ 704896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 704996263Sobrien ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 705096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 705196263Sobrien ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \ 705296263Sobrien__altivec_link_error_invalid_argument ())) 705396263Sobrien 705496263Sobrien#define vec_vsrb(a1, a2) \ 705596263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 705696263Sobrien ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 705796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 705896263Sobrien ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \ 705996263Sobrien__altivec_link_error_invalid_argument ())) 706096263Sobrien 706190075Sobrien#define vec_sra(a1, a2) \ 706296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 706396263Sobrien ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 706496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 706596263Sobrien ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 706696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 706796263Sobrien ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 706896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 706996263Sobrien ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 707096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 707196263Sobrien ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 707296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 707396263Sobrien ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 707490075Sobrien __altivec_link_error_invalid_argument ())))))) 707590075Sobrien 707696263Sobrien#define vec_vsraw(a1, a2) \ 707796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 707896263Sobrien ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 707996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 708096263Sobrien ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \ 708196263Sobrien__altivec_link_error_invalid_argument ())) 708296263Sobrien 708396263Sobrien#define vec_vsrah(a1, a2) \ 708496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 708596263Sobrien ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 708696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 708796263Sobrien ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \ 708896263Sobrien__altivec_link_error_invalid_argument ())) 708996263Sobrien 709096263Sobrien#define vec_vsrab(a1, a2) \ 709196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 709296263Sobrien ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 709396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 709496263Sobrien ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \ 709596263Sobrien__altivec_link_error_invalid_argument ())) 709696263Sobrien 709790075Sobrien#define vec_srl(a1, a2) \ 709896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 709996263Sobrien ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 710096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \ 710196263Sobrien ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 710296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 710396263Sobrien ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 710496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 710596263Sobrien ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 710696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \ 710796263Sobrien ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 710896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 710996263Sobrien ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 711096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \ 711196263Sobrien ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 711296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 711396263Sobrien ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 711496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 711596263Sobrien ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 711696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \ 711796263Sobrien ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 711896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 711996263Sobrien ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 712096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 712196263Sobrien ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 712296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \ 712396263Sobrien ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 712496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \ 712596263Sobrien ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 712696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 712796263Sobrien ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 712896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 712996263Sobrien ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 713096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \ 713196263Sobrien ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 713296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 713396263Sobrien ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \ 713490075Sobrien __altivec_link_error_invalid_argument ())))))))))))))))))) 713590075Sobrien 713690075Sobrien#define vec_sro(a1, a2) \ 713796263Sobrien__ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \ 713896263Sobrien ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 713996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \ 714096263Sobrien ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 714196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \ 714296263Sobrien ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 714396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \ 714496263Sobrien ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 714596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \ 714696263Sobrien ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 714796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \ 714896263Sobrien ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 714996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \ 715096263Sobrien ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 715196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \ 715296263Sobrien ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 715396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \ 715496263Sobrien ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 715596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \ 715696263Sobrien ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 715796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 715896263Sobrien ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 715996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 716096263Sobrien ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 716196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 716296263Sobrien ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 716396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 716496263Sobrien ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \ 716590075Sobrien __altivec_link_error_invalid_argument ())))))))))))))) 716690075Sobrien 716790075Sobrien#define vec_st(a1, a2, a3) \ 716896263Sobrien __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3)) 716990075Sobrien 717090075Sobrien#define vec_stl(a1, a2, a3) \ 717196263Sobrien __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3)) 717290075Sobrien 717390075Sobrien#define vec_ste(a, b, c) \ 717496263Sobrien__ch (__un_args_eq (vector unsigned char, (a)), \ 717596263Sobrien __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 717696263Sobrien__ch (__un_args_eq (vector signed char, (a)), \ 717796263Sobrien __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 717896263Sobrien__ch (__un_args_eq (vector unsigned short, (a)), \ 717996263Sobrien __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 718096263Sobrien__ch (__un_args_eq (vector signed short, (a)), \ 718196263Sobrien __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 718296263Sobrien__ch (__un_args_eq (vector unsigned int, (a)), \ 718396263Sobrien __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 718496263Sobrien__ch (__un_args_eq (vector signed int, (a)), \ 718596263Sobrien __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 718696263Sobrien__ch (__un_args_eq (vector float, (a)), \ 718796263Sobrien __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 718890075Sobrien __altivec_link_error_invalid_argument ()))))))) 718990075Sobrien 719096263Sobrien#define vec_stvewx(a, b, c) \ 719196263Sobrien__ch (__un_args_eq (vector unsigned int, (a)), \ 719296263Sobrien __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 719396263Sobrien__ch (__un_args_eq (vector signed int, (a)), \ 719496263Sobrien __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 719596263Sobrien__ch (__un_args_eq (vector float, (a)), \ 719696263Sobrien __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \ 719796263Sobrien__altivec_link_error_invalid_argument ()))) 719896263Sobrien 719996263Sobrien#define vec_stvehx(a, b, c) \ 720096263Sobrien__ch (__un_args_eq (vector unsigned short, (a)), \ 720196263Sobrien __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 720296263Sobrien__ch (__un_args_eq (vector signed short, (a)), \ 720396263Sobrien __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \ 720496263Sobrien__altivec_link_error_invalid_argument ())) 720596263Sobrien 720696263Sobrien#define vec_stvebx(a, b, c) \ 720796263Sobrien__ch (__un_args_eq (vector unsigned char, (a)), \ 720896263Sobrien __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 720996263Sobrien__ch (__un_args_eq (vector signed char, (a)), \ 721096263Sobrien __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \ 721196263Sobrien__altivec_link_error_invalid_argument ())) 721296263Sobrien 721390075Sobrien#define vec_sub(a1, a2) \ 721496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 721596263Sobrien ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 721696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 721796263Sobrien ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 721896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 721996263Sobrien ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 722096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 722196263Sobrien ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 722296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 722396263Sobrien ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 722496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 722596263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 722696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 722796263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 722896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 722996263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 723096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 723196263Sobrien ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 723296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 723396263Sobrien ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 723496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 723596263Sobrien ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 723696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 723796263Sobrien ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 723896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 723996263Sobrien ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \ 724090075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 724190075Sobrien 724296263Sobrien#define vec_vsubfp(a1, a2) \ 724396263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 724496263Sobrien ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \ 724596263Sobrien__altivec_link_error_invalid_argument ()) 724690075Sobrien 724796263Sobrien#define vec_vsubuwm(a1, a2) \ 724896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 724996263Sobrien ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 725096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 725196263Sobrien ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 725296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 725396263Sobrien ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 725496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 725596263Sobrien ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \ 725696263Sobrien__altivec_link_error_invalid_argument ())))) 725796263Sobrien 725896263Sobrien#define vec_vsubuhm(a1, a2) \ 725996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 726096263Sobrien ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 726196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 726296263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 726396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 726496263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 726596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 726696263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \ 726796263Sobrien__altivec_link_error_invalid_argument ())))) 726896263Sobrien 726996263Sobrien#define vec_vsububm(a1, a2) \ 727096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 727196263Sobrien ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 727296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 727396263Sobrien ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 727496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 727596263Sobrien ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 727696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 727796263Sobrien ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \ 727896263Sobrien__altivec_link_error_invalid_argument ())))) 727996263Sobrien 728096263Sobrien#define vec_subc(a1, a2) ((vector unsigned int) __builtin_altivec_vsubcuw ((vector unsigned int) (a1), (vector unsigned int) (a2))) 728196263Sobrien 728290075Sobrien#define vec_subs(a1, a2) \ 728396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 728496263Sobrien ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 728596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 728696263Sobrien ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 728796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 728896263Sobrien ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 728996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 729096263Sobrien ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 729196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 729296263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 729396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 729496263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 729596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 729696263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 729796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 729896263Sobrien ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \ 729996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 730096263Sobrien ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 730196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 730296263Sobrien ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 730396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 730496263Sobrien ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 730596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 730696263Sobrien ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ 730790075Sobrien __altivec_link_error_invalid_argument ())))))))))))) 730890075Sobrien 730996263Sobrien#define vec_vsubsws(a1, a2) \ 731096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 731196263Sobrien ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ 731296263Sobrien__altivec_link_error_invalid_argument ()) 731396263Sobrien 731496263Sobrien#define vec_vsubuws(a1, a2) \ 731596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 731696263Sobrien ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 731796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 731896263Sobrien ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 731996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 732096263Sobrien ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \ 732196263Sobrien__altivec_link_error_invalid_argument ()))) 732296263Sobrien 732396263Sobrien#define vec_vsubshs(a1, a2) \ 732496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 732596263Sobrien ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \ 732696263Sobrien__altivec_link_error_invalid_argument ()) 732796263Sobrien 732896263Sobrien#define vec_vsubuhs(a1, a2) \ 732996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 733096263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 733196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 733296263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 733396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 733496263Sobrien ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \ 733596263Sobrien__altivec_link_error_invalid_argument ()))) 733696263Sobrien 733796263Sobrien#define vec_vsubsbs(a1, a2) \ 733896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 733996263Sobrien ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \ 734096263Sobrien__altivec_link_error_invalid_argument ()) 734196263Sobrien 734296263Sobrien#define vec_vsububs(a1, a2) \ 734396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 734496263Sobrien ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 734596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 734696263Sobrien ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 734796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 734896263Sobrien ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \ 734996263Sobrien__altivec_link_error_invalid_argument ()))) 735096263Sobrien 735190075Sobrien#define vec_sum4s(a1, a2) \ 735296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 735396263Sobrien ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \ 735496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \ 735596263Sobrien ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \ 735696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \ 735796263Sobrien ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \ 735890075Sobrien __altivec_link_error_invalid_argument ()))) 735990075Sobrien 736096263Sobrien#define vec_vsum4shs(a1, a2) \ 736196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \ 736296263Sobrien ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \ 736396263Sobrien__altivec_link_error_invalid_argument ()) 736490075Sobrien 736596263Sobrien#define vec_vsum4sbs(a1, a2) \ 736696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \ 736796263Sobrien ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \ 736896263Sobrien__altivec_link_error_invalid_argument ()) 736990075Sobrien 737096263Sobrien#define vec_vsum4ubs(a1, a2) \ 737196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \ 737296263Sobrien ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \ 737396263Sobrien__altivec_link_error_invalid_argument ()) 737490075Sobrien 737596263Sobrien#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2)) 737696263Sobrien 737796263Sobrien#define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2)) 737896263Sobrien 737996263Sobrien#define vec_trunc(a1) __builtin_altivec_vrfiz ((a1)) 738096263Sobrien 738190075Sobrien#define vec_unpackh(a1) \ 738296263Sobrien__ch (__un_args_eq (vector signed char, (a1)), \ 738396263Sobrien ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ 738496263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 738596263Sobrien ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \ 738696263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 738796263Sobrien ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ 738890075Sobrien __altivec_link_error_invalid_argument ()))) 738990075Sobrien 739096263Sobrien#define vec_vupkhsh(a1) \ 739196263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 739296263Sobrien ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ 739396263Sobrien__altivec_link_error_invalid_argument ()) 739496263Sobrien 739596263Sobrien#define vec_vupkhpx(a1) \ 739696263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 739796263Sobrien ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \ 739896263Sobrien__altivec_link_error_invalid_argument ()) 739996263Sobrien 740096263Sobrien#define vec_vupkhsb(a1) \ 740196263Sobrien__ch (__un_args_eq (vector signed char, (a1)), \ 740296263Sobrien ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ 740396263Sobrien__altivec_link_error_invalid_argument ()) 740496263Sobrien 740590075Sobrien#define vec_unpackl(a1) \ 740696263Sobrien__ch (__un_args_eq (vector signed char, (a1)), \ 740796263Sobrien ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ 740896263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 740996263Sobrien ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \ 741096263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 741196263Sobrien ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ 741290075Sobrien __altivec_link_error_invalid_argument ()))) 741390075Sobrien 741496263Sobrien#define vec_vupklsh(a1) \ 741596263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 741696263Sobrien ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ 741796263Sobrien__altivec_link_error_invalid_argument ()) 741896263Sobrien 741996263Sobrien#define vec_vupklpx(a1) \ 742096263Sobrien__ch (__un_args_eq (vector signed short, (a1)), \ 742196263Sobrien ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \ 742296263Sobrien__altivec_link_error_invalid_argument ()) 742396263Sobrien 742496263Sobrien#define vec_vupklsb(a1) \ 742596263Sobrien__ch (__un_args_eq (vector signed char, (a1)), \ 742696263Sobrien ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ 742796263Sobrien__altivec_link_error_invalid_argument ()) 742896263Sobrien 742990075Sobrien#define vec_xor(a1, a2) \ 743096263Sobrien__ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \ 743196263Sobrien ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 743296263Sobrien__ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \ 743396263Sobrien ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 743496263Sobrien__ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \ 743596263Sobrien ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 743696263Sobrien__ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \ 743796263Sobrien ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 743896263Sobrien__ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \ 743996263Sobrien ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 744096263Sobrien__ch (__bin_args_eq (vector signed int, ((a1)), vector unsigned int, ((a2))), \ 744196263Sobrien ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 744296263Sobrien__ch (__bin_args_eq (vector unsigned int, ((a1)), vector signed int, ((a2))), \ 744396263Sobrien ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 744496263Sobrien__ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \ 744596263Sobrien ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 744696263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \ 744796263Sobrien ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 744896263Sobrien__ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \ 744996263Sobrien ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 745096263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \ 745196263Sobrien ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 745296263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \ 745396263Sobrien ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 745496263Sobrien__ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \ 745596263Sobrien ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 745696263Sobrien__ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \ 745796263Sobrien ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 745896263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \ 745996263Sobrien ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 746096263Sobrien__ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \ 746196263Sobrien ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 746296263Sobrien__ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \ 746396263Sobrien ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 746496263Sobrien__ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \ 746596263Sobrien ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 746696263Sobrien__ch (__bin_args_eq (vector signed char, ((a1)), vector signed char, ((a2))), \ 746796263Sobrien ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 746896263Sobrien__ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \ 746996263Sobrien ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 747096263Sobrien__ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \ 747196263Sobrien ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 747296263Sobrien__ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \ 747396263Sobrien ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \ 747496263Sobrien __altivec_link_error_invalid_argument ())))))))))))))))))))))) 747590075Sobrien 747696263Sobrien/* Predicates. */ 747796263Sobrien 747890075Sobrien#define vec_all_eq(a1, a2) \ 747996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 748096263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 748196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 748296263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 748396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 748496263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 748596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 748696263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 748796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 748896263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 748996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 749096263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 749196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 749296263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 749396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 749496263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 749596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 749696263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 749796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 749896263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 749996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 750096263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 750196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 750296263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 750396263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 750496263Sobrien __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \ 750590075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 750690075Sobrien 750790075Sobrien#define vec_all_ge(a1, a2) \ 750896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 750996263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 751096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 751196263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 751296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 751396263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 751496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 751596263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \ 751696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 751796263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 751896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 751996263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 752096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 752196263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 752296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 752396263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \ 752496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 752596263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 752696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 752796263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 752896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 752996263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 753096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 753196263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \ 753296263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 753396263Sobrien __builtin_altivec_vcmpgefp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \ 753490075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 753590075Sobrien 753690075Sobrien#define vec_all_gt(a1, a2) \ 753796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 753896263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 753996263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 754096263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 754196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 754296263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 754396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 754496263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \ 754596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 754696263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 754796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 754896263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 754996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 755096263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 755196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 755296263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \ 755396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 755496263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 755596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 755696263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 755796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 755896263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 755996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 756096263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \ 756196263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 756296263Sobrien __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \ 756390075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 756490075Sobrien 756596263Sobrien#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2)) 756690075Sobrien 756790075Sobrien#define vec_all_le(a1, a2) \ 756896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 756996263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 757096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 757196263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 757296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 757396263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 757496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 757596263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 757696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 757796263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 757896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 757996263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 758096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 758196263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 758296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 758396263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 758496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 758596263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 758696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 758796263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 758896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 758996263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 759096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 759196263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 759296263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 759396263Sobrien __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \ 759490075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 759590075Sobrien 759690075Sobrien#define vec_all_lt(a1, a2) \ 759796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 759896263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 759996263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 760096263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 760196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 760296263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 760396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 760496263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \ 760596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 760696263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 760796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 760896263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 760996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 761096263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 761196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 761296263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \ 761396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 761496263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 761596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 761696263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 761796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 761896263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 761996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 762096263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \ 762196263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 762296263Sobrien __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \ 762390075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 762490075Sobrien 762596263Sobrien#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)) 762690075Sobrien 762790075Sobrien#define vec_all_ne(a1, a2) \ 762896263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 762996263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 763096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 763196263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 763296263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 763396263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 763496263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 763596263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \ 763696263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 763796263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 763896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 763996263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 764096263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 764196263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 764296263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 764396263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \ 764496263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 764596263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 764696263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 764796263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 764896263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 764996263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 765096263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 765196263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \ 765296263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 765396263Sobrien __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \ 765490075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 765590075Sobrien 765696263Sobrien#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)) 765790075Sobrien 765896263Sobrien#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)) 765990075Sobrien 766096263Sobrien#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)) 766190075Sobrien 766296263Sobrien#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)) 766390075Sobrien 766496263Sobrien#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)) 766590075Sobrien 766690075Sobrien#define vec_any_eq(a1, a2) \ 766796263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 766896263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 766996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 767096263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 767196263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 767296263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 767396263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 767496263Sobrien __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 767596263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 767696263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 767796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 767896263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 767996263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 768096263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 768196263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 768296263Sobrien __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 768396263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 768496263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 768596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 768696263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 768796263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 768896263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 768996263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 769096263Sobrien __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 769196263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 769296263Sobrien __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \ 769390075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 769490075Sobrien 769590075Sobrien#define vec_any_ge(a1, a2) \ 769696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 769796263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 769896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 769996263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 770096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 770196263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 770296263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 770396263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 770496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 770596263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 770696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 770796263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 770896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 770996263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 771096263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 771196263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 771296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 771396263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 771496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 771596263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 771696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 771796263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 771896263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 771996263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 772096263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 772196263Sobrien __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \ 772290075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 772390075Sobrien 772490075Sobrien#define vec_any_gt(a1, a2) \ 772596263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 772696263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 772796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 772896263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 772996263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 773096263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 773196263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 773296263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 773396263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 773496263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 773596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 773696263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 773796263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 773896263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 773996263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 774096263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 774196263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 774296263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 774396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 774496263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 774596263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 774696263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 774796263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 774896263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 774996263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 775096263Sobrien __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \ 775190075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 775290075Sobrien 775390075Sobrien#define vec_any_le(a1, a2) \ 775496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 775596263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 775696263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 775796263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 775896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 775996263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 776096263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 776196263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 776296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 776396263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 776496263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 776596263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 776696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 776796263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 776896263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 776996263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 777096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 777196263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 777296263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 777396263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 777496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 777596263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 777696263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 777796263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 777896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 777996263Sobrien __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \ 778090075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 778190075Sobrien 778290075Sobrien#define vec_any_lt(a1, a2) \ 778396263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 778496263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 778596263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 778696263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 778796263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 778896263Sobrien __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 778996263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 779096263Sobrien __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \ 779196263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 779296263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 779396263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 779496263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 779596263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 779696263Sobrien __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 779796263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 779896263Sobrien __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \ 779996263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 780096263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 780196263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 780296263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 780396263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 780496263Sobrien __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 780596263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 780696263Sobrien __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \ 780796263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 780896263Sobrien __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \ 780990075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 781090075Sobrien 781196263Sobrien#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1) 781290075Sobrien 781390075Sobrien#define vec_any_ne(a1, a2) \ 781496263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ 781596263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 781696263Sobrien__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ 781796263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 781896263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \ 781996263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 782096263Sobrien__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \ 782196263Sobrien __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \ 782296263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ 782396263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 782496263Sobrien__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \ 782596263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 782696263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \ 782796263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 782896263Sobrien__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \ 782996263Sobrien __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \ 783096263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ 783196263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 783296263Sobrien__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ 783396263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 783496263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \ 783596263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 783696263Sobrien__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ 783796263Sobrien __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \ 783896263Sobrien__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ 783996263Sobrien __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \ 784090075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 784190075Sobrien 784296263Sobrien#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)) 784390075Sobrien 784496263Sobrien#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)) 784590075Sobrien 784696263Sobrien#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)) 784790075Sobrien 784896263Sobrien#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)) 784990075Sobrien 785096263Sobrien#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)) 785190075Sobrien 785296263Sobrien#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2)) 785390075Sobrien 785490075Sobrien#endif /* __cplusplus */ 785590075Sobrien 785690075Sobrien#endif /* _ALTIVEC_H */ 7857