altivec.h revision 90075
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 3890075Sobrien#define __ALTIVEC__ 1 3990075Sobrien 4090075Sobrien#define __vector __attribute__((vector_size(16))) 4190075Sobrien 4290075Sobrien/* Dummy prototype. */ 4390075Sobrienextern void __altivec_link_error_invalid_argument (); 4490075Sobrien 4590075Sobrien/* You are allowed to undef this for C++ compatability. */ 4690075Sobrien#define vector __vector 4790075Sobrien 4890075Sobrien/* Helper macros. */ 4990075Sobrien 5090075Sobrien#define __bin_args_eq(xtype, x, ytype, y) \ 5190075Sobrien (__builtin_types_compatible_p (xtype, typeof (x)) \ 5290075Sobrien && __builtin_types_compatible_p (ytype, typeof (y))) 5390075Sobrien 5490075Sobrien#define __un_args_eq(xtype, x) \ 5590075Sobrien __builtin_types_compatible_p (xtype, typeof (x)) 5690075Sobrien 5790075Sobrien#define __tern_args_eq(xtype, x, ytype, y, ztype, z) \ 5890075Sobrien (__builtin_types_compatible_p (xtype, typeof (x)) \ 5990075Sobrien && __builtin_types_compatible_p (ytype, typeof (y)) \ 6090075Sobrien && __builtin_types_compatible_p (ztype, typeof (z))) 6190075Sobrien 6290075Sobrien#define __ch(x, y, z) __builtin_choose_expr (x, y, z) 6390075Sobrien 6490075Sobrien#ifdef __cplusplus 6590075Sobrien 6690075Sobrien/* C++ stuff here. */ 6790075Sobrien 6890075Sobrien#else /* not C++ */ 6990075Sobrien 7090075Sobrien/* Hairy macros that implement the AltiVec high-level programming 7190075Sobrien interface for C. */ 7290075Sobrien 7390075Sobrien#define vec_add(a1, a2) \ 7490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 7590075Sobrien (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 7690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 7790075Sobrien (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 7890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 7990075Sobrien (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 8090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 8190075Sobrien (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 8290075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 8390075Sobrien (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 8490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 8590075Sobrien (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 8690075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 8790075Sobrien (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 8890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 8990075Sobrien (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 9090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 9190075Sobrien (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 9390075Sobrien (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 9590075Sobrien (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 9790075Sobrien (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9890075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 9990075Sobrien (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2), \ 10090075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 10190075Sobrien 10290075Sobrien#define vec_addc(a1, a2) __builtin_altivec_vaddcuw (a1, a2) 10390075Sobrien 10490075Sobrien#define vec_adds(a1, a2) \ 10590075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 10690075Sobrien (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2), \ 10790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 10890075Sobrien (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2), \ 10990075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 11090075Sobrien (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2), \ 11190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 11290075Sobrien (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2), \ 11390075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 11490075Sobrien (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2), \ 11590075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 11690075Sobrien (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2), \ 11790075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 11890075Sobrien (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2), \ 11990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 12090075Sobrien (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2), \ 12190075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 12290075Sobrien (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2), \ 12390075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 12490075Sobrien (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2), \ 12590075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 12690075Sobrien (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2), \ 12790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 12890075Sobrien (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2), \ 12990075Sobrien __altivec_link_error_invalid_argument ())))))))))))) 13090075Sobrien 13190075Sobrien#define vec_and(a1, a2) \ 13290075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 13390075Sobrien (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 13490075Sobrien__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 13590075Sobrien (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 13690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 13790075Sobrien (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 13890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 13990075Sobrien (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 14090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 14190075Sobrien (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 14290075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 14390075Sobrien (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 14490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 14590075Sobrien (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 14690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 14790075Sobrien (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 14890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 14990075Sobrien (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 15190075Sobrien (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 15390075Sobrien (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 15590075Sobrien (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 15790075Sobrien (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 15990075Sobrien (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 16090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 16190075Sobrien (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 16290075Sobrien __altivec_link_error_invalid_argument ()))))))))))))))) 16390075Sobrien 16490075Sobrien#define vec_andc(a1, a2) \ 16590075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 16690075Sobrien (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 16790075Sobrien__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 16890075Sobrien (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 16990075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 17090075Sobrien (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17190075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 17290075Sobrien (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 17490075Sobrien (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17590075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 17690075Sobrien (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 17890075Sobrien (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 18090075Sobrien (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 18290075Sobrien (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 18490075Sobrien (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18590075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 18690075Sobrien (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 18890075Sobrien (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 19090075Sobrien (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 19190075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 19290075Sobrien (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 19390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 19490075Sobrien (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 19590075Sobrien __altivec_link_error_invalid_argument ()))))))))))))))) 19690075Sobrien 19790075Sobrien#define vec_avg(a1, a2) \ 19890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 19990075Sobrien (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2), \ 20090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 20190075Sobrien (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2), \ 20290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 20390075Sobrien (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2), \ 20490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 20590075Sobrien (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2), \ 20690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 20790075Sobrien (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2), \ 20890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 20990075Sobrien (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2), \ 21090075Sobrien __altivec_link_error_invalid_argument ())))))) 21190075Sobrien 21290075Sobrien#define vec_ceil(a1) __builtin_altivec_vrfip (a1) 21390075Sobrien 21490075Sobrien#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp (a1, a2) 21590075Sobrien 21690075Sobrien#define vec_cmpeq(a1, a2) \ 21790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 21890075Sobrien (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2), \ 21990075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 22090075Sobrien (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2), \ 22190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 22290075Sobrien (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2), \ 22390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 22490075Sobrien (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2), \ 22590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 22690075Sobrien (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2), \ 22790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 22890075Sobrien (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2), \ 22990075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 23090075Sobrien (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2), \ 23190075Sobrien __altivec_link_error_invalid_argument ()))))))) 23290075Sobrien 23390075Sobrien#define vec_cmpge(a1, a2) __builtin_altivec_vcmpgefp (a1, a2) 23490075Sobrien 23590075Sobrien#define vec_cmpgt(a1, a2) \ 23690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 23790075Sobrien (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2), \ 23890075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 23990075Sobrien (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2), \ 24090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 24190075Sobrien (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2), \ 24290075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 24390075Sobrien (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2), \ 24490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 24590075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2), \ 24690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 24790075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2), \ 24890075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 24990075Sobrien (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2), \ 25090075Sobrien __altivec_link_error_invalid_argument ()))))))) 25190075Sobrien 25290075Sobrien#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp (a1, a2) 25390075Sobrien 25490075Sobrien#define vec_cmplt(a1, a2) \ 25590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 25690075Sobrien (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2), \ 25790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 25890075Sobrien (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2), \ 25990075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 26090075Sobrien (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2), \ 26190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 26290075Sobrien (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2), \ 26390075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 26490075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2), \ 26590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 26690075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2), \ 26790075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 26890075Sobrien (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2), \ 26990075Sobrien __altivec_link_error_invalid_argument ()))))))) 27090075Sobrien 27190075Sobrien#define vec_ctf(a1, a2) \ 27290075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, const char, a2), \ 27390075Sobrien (vector float) __builtin_altivec_vcfux ((vector signed int) a1, (const char) a2), \ 27490075Sobrien__ch (__bin_args_eq (vector signed int, a1, const char, a2), \ 27590075Sobrien (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, (const char) a2), \ 27690075Sobrien __altivec_link_error_invalid_argument ())) 27790075Sobrien 27890075Sobrien#define vec_cts(a1, a2) __builtin_altivec_vctsxs (a1, a2) 27990075Sobrien 28090075Sobrien#define vec_ctu(a1, a2) __builtin_altivec_vctuxs (a1, a2) 28190075Sobrien 28290075Sobrien#define vec_dss(a1) __builtin_altivec_dss (a1) 28390075Sobrien 28490075Sobrien#define vec_dssall() __builtin_altivec_dssall () 28590075Sobrien 28690075Sobrien#define vec_dst(a1, a2, a3) __builtin_altivec_dst (a1, a2, a3) 28790075Sobrien 28890075Sobrien#define vec_dstst(a1, a2, a3) __builtin_altivec_dstst (a1, a2, a3) 28990075Sobrien 29090075Sobrien#define vec_dststt(a1, a2, a3) __builtin_altivec_dststt (a1, a2, a3) 29190075Sobrien 29290075Sobrien#define vec_dstt(a1, a2, a3) __builtin_altivec_dstt (a1, a2, a3) 29390075Sobrien 29490075Sobrien#define vec_expte(a1) __builtin_altivec_vexptefp (a1) 29590075Sobrien 29690075Sobrien#define vec_floor(a1) __builtin_altivec_vrfim (a1) 29790075Sobrien 29890075Sobrien#define vec_ld(a, b) \ 29990075Sobrien__ch (__un_args_eq (vector unsigned char *, b), \ 30090075Sobrien (vector unsigned char) __builtin_altivec_lvx (a, b), \ 30190075Sobrien__ch (__un_args_eq (unsigned char *, b), \ 30290075Sobrien (vector unsigned char) __builtin_altivec_lvx (a, b), \ 30390075Sobrien__ch (__un_args_eq (vector signed char *, b), \ 30490075Sobrien (vector signed char) __builtin_altivec_lvx (a, b), \ 30590075Sobrien__ch (__un_args_eq (signed char *, b), \ 30690075Sobrien (vector signed char) __builtin_altivec_lvx (a, b), \ 30790075Sobrien__ch (__un_args_eq (vector unsigned short *, b), \ 30890075Sobrien (vector unsigned short) __builtin_altivec_lvx (a, b), \ 30990075Sobrien__ch (__un_args_eq (unsigned short *, b), \ 31090075Sobrien (vector unsigned short) __builtin_altivec_lvx (a, b), \ 31190075Sobrien__ch (__un_args_eq (vector signed short *, b), \ 31290075Sobrien (vector signed short) __builtin_altivec_lvx (a, b), \ 31390075Sobrien__ch (__un_args_eq (signed short *, b), \ 31490075Sobrien (vector signed short) __builtin_altivec_lvx (a, b), \ 31590075Sobrien__ch (__un_args_eq (vector unsigned int *, b), \ 31690075Sobrien (vector unsigned int) __builtin_altivec_lvx (a, b), \ 31790075Sobrien__ch (__un_args_eq (unsigned int *, b), \ 31890075Sobrien (vector unsigned int) __builtin_altivec_lvx (a, b), \ 31990075Sobrien__ch (__un_args_eq (vector signed int *, b), \ 32090075Sobrien (vector signed int) __builtin_altivec_lvx (a, b), \ 32190075Sobrien__ch (__un_args_eq (signed int *, b), \ 32290075Sobrien (vector signed int) __builtin_altivec_lvx (a, b), \ 32390075Sobrien__ch (__un_args_eq (vector float *, b), \ 32490075Sobrien (vector float) __builtin_altivec_lvx (a, b), \ 32590075Sobrien__ch (__un_args_eq (float *, b), \ 32690075Sobrien (vector float) __builtin_altivec_lvx (a, b), \ 32790075Sobrien__altivec_link_error_invalid_argument ())))))))))))))) 32890075Sobrien 32990075Sobrien#define vec_lde(a, b) \ 33090075Sobrien__ch (__un_args_eq (unsigned char *, b), \ 33190075Sobrien (vector unsigned char) __builtin_altivec_lvebx (a, b), \ 33290075Sobrien__ch (__un_args_eq (signed char *, b), \ 33390075Sobrien (vector signed char) __builtin_altivec_lvebx (a, b), \ 33490075Sobrien__ch (__un_args_eq (unsigned short *, b), \ 33590075Sobrien (vector unsigned short) __builtin_altivec_lvehx (a, b), \ 33690075Sobrien__ch (__un_args_eq (signed short *, b), \ 33790075Sobrien (vector signed short) __builtin_altivec_lvehx (a, b), \ 33890075Sobrien__ch (__un_args_eq (unsigned int *, b), \ 33990075Sobrien (vector unsigned int) __builtin_altivec_lvewx (a, b), \ 34090075Sobrien__ch (__un_args_eq (signed int *, b), \ 34190075Sobrien (vector signed int) __builtin_altivec_lvewx (a, b), \ 34290075Sobrien__altivec_link_error_invalid_argument ())))))) 34390075Sobrien 34490075Sobrien#define vec_ldl(a, b) \ 34590075Sobrien__ch (__un_args_eq (vector unsigned char *, b), \ 34690075Sobrien (vector unsigned char) __builtin_altivec_lvxl (a, b), \ 34790075Sobrien__ch (__un_args_eq (unsigned char *, b), \ 34890075Sobrien (vector unsigned char) __builtin_altivec_lvxl (a, b), \ 34990075Sobrien__ch (__un_args_eq (vector signed char *, b), \ 35090075Sobrien (vector signed char) __builtin_altivec_lvxl (a, b), \ 35190075Sobrien__ch (__un_args_eq (signed char *, b), \ 35290075Sobrien (vector signed char) __builtin_altivec_lvxl (a, b), \ 35390075Sobrien__ch (__un_args_eq (vector unsigned short *, b), \ 35490075Sobrien (vector unsigned short) __builtin_altivec_lvxl (a, b), \ 35590075Sobrien__ch (__un_args_eq (unsigned short *, b), \ 35690075Sobrien (vector unsigned short) __builtin_altivec_lvxl (a, b), \ 35790075Sobrien__ch (__un_args_eq (vector signed short *, b), \ 35890075Sobrien (vector signed short) __builtin_altivec_lvxl (a, b), \ 35990075Sobrien__ch (__un_args_eq (signed short *, b), \ 36090075Sobrien (vector signed short) __builtin_altivec_lvxl (a, b), \ 36190075Sobrien__ch (__un_args_eq (vector unsigned int *, b), \ 36290075Sobrien (vector unsigned int) __builtin_altivec_lvxl (a, b), \ 36390075Sobrien__ch (__un_args_eq (unsigned int *, b), \ 36490075Sobrien (vector unsigned int) __builtin_altivec_lvxl (a, b), \ 36590075Sobrien__ch (__un_args_eq (vector signed int *, b), \ 36690075Sobrien (vector signed int) __builtin_altivec_lvxl (a, b), \ 36790075Sobrien__ch (__un_args_eq (signed int *, b), \ 36890075Sobrien (vector signed int) __builtin_altivec_lvxl (a, b), \ 36990075Sobrien__ch (__un_args_eq (vector float *, b), \ 37090075Sobrien (vector float) __builtin_altivec_lvxl (a, b), \ 37190075Sobrien__ch (__un_args_eq (float *, b), \ 37290075Sobrien (vector float) __builtin_altivec_lvxl (a, b), \ 37390075Sobrien__altivec_link_error_invalid_argument ())))))))))))))) 37490075Sobrien 37590075Sobrien#define vec_loge(a1) __builtin_altivec_vlogefp (a1) 37690075Sobrien 37790075Sobrien#define vec_lvsl(a1, a2) __builtin_altivec_lvsl (a1, a2) 37890075Sobrien 37990075Sobrien#define vec_lvsr(a1, a2) __builtin_altivec_lvsr (a1, a2) 38090075Sobrien 38190075Sobrien#define vec_madd(a1, a2, a3) __builtin_altivec_vmaddfp (a1, a2, a3) 38290075Sobrien 38390075Sobrien#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs (a1, a2, a3) 38490075Sobrien 38590075Sobrien#define vec_max(a1, a2) \ 38690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 38790075Sobrien (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2), \ 38890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 38990075Sobrien (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2), \ 39090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 39190075Sobrien (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2), \ 39290075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 39390075Sobrien (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2), \ 39490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 39590075Sobrien (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2), \ 39690075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 39790075Sobrien (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2), \ 39890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 39990075Sobrien (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2), \ 40090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 40190075Sobrien (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2), \ 40290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 40390075Sobrien (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2), \ 40490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 40590075Sobrien (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2), \ 40690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 40790075Sobrien (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2), \ 40890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 40990075Sobrien (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2), \ 41090075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 41190075Sobrien (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2), \ 41290075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 41390075Sobrien 41490075Sobrien#define vec_mergeh(a1, a2) \ 41590075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 41690075Sobrien (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2), \ 41790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 41890075Sobrien (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2), \ 41990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 42090075Sobrien (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2), \ 42190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 42290075Sobrien (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2), \ 42390075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 42490075Sobrien (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2), \ 42590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 42690075Sobrien (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2), \ 42790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 42890075Sobrien (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2), \ 42990075Sobrien __altivec_link_error_invalid_argument ()))))))) 43090075Sobrien 43190075Sobrien#define vec_mergel(a1, a2) \ 43290075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 43390075Sobrien (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2), \ 43490075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 43590075Sobrien (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2), \ 43690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 43790075Sobrien (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2), \ 43890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 43990075Sobrien (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2), \ 44090075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 44190075Sobrien (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2), \ 44290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 44390075Sobrien (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2), \ 44490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 44590075Sobrien (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2), \ 44690075Sobrien __altivec_link_error_invalid_argument ()))))))) 44790075Sobrien 44890075Sobrien#define vec_mfvscr() __builtin_altivec_mfvscr () 44990075Sobrien 45090075Sobrien#define vec_min(a1, a2) \ 45190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 45290075Sobrien (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2), \ 45390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 45490075Sobrien (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2), \ 45590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 45690075Sobrien (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2), \ 45790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 45890075Sobrien (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2), \ 45990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 46090075Sobrien (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2), \ 46190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 46290075Sobrien (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2), \ 46390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 46490075Sobrien (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2), \ 46590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 46690075Sobrien (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2), \ 46790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 46890075Sobrien (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2), \ 46990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 47090075Sobrien (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2), \ 47190075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 47290075Sobrien (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2), \ 47390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 47490075Sobrien (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2), \ 47590075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 47690075Sobrien (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2), \ 47790075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 47890075Sobrien 47990075Sobrien#define vec_mladd(a1, a2, a3) \ 48090075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed short, a3), \ 48190075Sobrien (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 48290075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector unsigned short, a2, vector unsigned short, a3), \ 48390075Sobrien (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 48490075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector signed short, a2, vector signed short, a3), \ 48590075Sobrien (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 48690075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned short, a3), \ 48790075Sobrien (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 48890075Sobrien __altivec_link_error_invalid_argument ())))) 48990075Sobrien 49090075Sobrien#define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs (a1, a2, a3) 49190075Sobrien 49290075Sobrien#define vec_msum(a1, a2, a3) \ 49390075Sobrien__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned int, a3), \ 49490075Sobrien (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3), \ 49590075Sobrien__ch (__tern_args_eq (vector signed char, a1, vector unsigned char, a2, vector signed int, a3), \ 49690075Sobrien (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3), \ 49790075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned int, a3), \ 49890075Sobrien (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 49990075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed int, a3), \ 50090075Sobrien (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 50190075Sobrien __altivec_link_error_invalid_argument ())))) 50290075Sobrien 50390075Sobrien#define vec_msums(a1, a2, a3) \ 50490075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned int, a3), \ 50590075Sobrien (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 50690075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed int, a3), \ 50790075Sobrien (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 50890075Sobrien __altivec_link_error_invalid_argument ())) 50990075Sobrien 51090075Sobrien#define vec_mtvscr(a1) \ 51190075Sobrien__ch (__un_args_eq (vector signed int, a1), \ 51290075Sobrien __builtin_altivec_mtvscr ((vector signed int) a1), \ 51390075Sobrien__ch (__un_args_eq (vector unsigned int, a1), \ 51490075Sobrien __builtin_altivec_mtvscr ((vector signed int) a1), \ 51590075Sobrien__ch (__un_args_eq (vector signed short, a1), \ 51690075Sobrien __builtin_altivec_mtvscr ((vector signed int) a1), \ 51790075Sobrien__ch (__un_args_eq (vector unsigned short, a1), \ 51890075Sobrien __builtin_altivec_mtvscr ((vector signed int) a1), \ 51990075Sobrien__ch (__un_args_eq (vector signed char, a1), \ 52090075Sobrien __builtin_altivec_mtvscr ((vector signed int) a1), \ 52190075Sobrien__ch (__un_args_eq (vector unsigned char, a1), \ 52290075Sobrien __builtin_altivec_mtvscr ((vector signed int) a1), \ 52390075Sobrien __altivec_link_error_invalid_argument ())))))) 52490075Sobrien 52590075Sobrien#define vec_mule(a1, a2) \ 52690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 52790075Sobrien (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2), \ 52890075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 52990075Sobrien (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2), \ 53090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 53190075Sobrien (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2), \ 53290075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 53390075Sobrien (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2), \ 53490075Sobrien __altivec_link_error_invalid_argument ())))) 53590075Sobrien 53690075Sobrien#define vec_mulo(a1, a2) \ 53790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 53890075Sobrien (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2), \ 53990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 54090075Sobrien (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2), \ 54190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 54290075Sobrien (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2), \ 54390075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 54490075Sobrien (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2), \ 54590075Sobrien __altivec_link_error_invalid_argument ())))) 54690075Sobrien 54790075Sobrien#define vec_nmsub(a1, a2, a3) __builtin_altivec_vnmsubfp (a1, a2, a3) 54890075Sobrien 54990075Sobrien#define vec_nor(a1, a2) \ 55090075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 55190075Sobrien (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 55290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 55390075Sobrien (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 55490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 55590075Sobrien (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 55690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 55790075Sobrien (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 55890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 55990075Sobrien (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 56090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 56190075Sobrien (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 56290075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 56390075Sobrien (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 56490075Sobrien __altivec_link_error_invalid_argument ()))))))) 56590075Sobrien 56690075Sobrien#define vec_or(a1, a2) \ 56790075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 56890075Sobrien (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 56990075Sobrien__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 57090075Sobrien (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 57190075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 57290075Sobrien (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 57390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 57490075Sobrien (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 57590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 57690075Sobrien (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 57790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 57890075Sobrien (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 57990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 58090075Sobrien (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 58190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 58290075Sobrien (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 58390075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 58490075Sobrien (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 58590075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 58690075Sobrien (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 58790075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 58890075Sobrien (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 58990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 59090075Sobrien (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 59190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 59290075Sobrien (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 59390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 59490075Sobrien (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 59590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 59690075Sobrien (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 59790075Sobrien __altivec_link_error_invalid_argument ()))))))))))))))) 59890075Sobrien 59990075Sobrien#define vec_pack(a1, a2) \ 60090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 60190075Sobrien (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2), \ 60290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 60390075Sobrien (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2), \ 60490075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 60590075Sobrien (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2), \ 60690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 60790075Sobrien (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2), \ 60890075Sobrien __altivec_link_error_invalid_argument ())))) 60990075Sobrien 61090075Sobrien#define vec_packpx(a1, a2) __builtin_altivec_vpkpx (a1, a2) 61190075Sobrien 61290075Sobrien#define vec_packs(a1, a2) \ 61390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 61490075Sobrien (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2), \ 61590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 61690075Sobrien (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2), \ 61790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 61890075Sobrien (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2), \ 61990075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 62090075Sobrien (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2), \ 62190075Sobrien __altivec_link_error_invalid_argument ())))) 62290075Sobrien 62390075Sobrien#define vec_packsu(a1, a2) \ 62490075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 62590075Sobrien (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2), \ 62690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 62790075Sobrien (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2), \ 62890075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 62990075Sobrien (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2), \ 63090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 63190075Sobrien (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2), \ 63290075Sobrien __altivec_link_error_invalid_argument ())))) 63390075Sobrien 63490075Sobrien#define vec_perm(a1, a2, a3, a4) \ 63590075Sobrien__ch (__tern_args_eq (vector float, a1, vector float, a2, vector unsigned char, a3), \ 63690075Sobrien (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 63790075Sobrien__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector unsigned char, a3), \ 63890075Sobrien (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 63990075Sobrien__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector unsigned char, a3), \ 64090075Sobrien (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 64190075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector unsigned char, a3), \ 64290075Sobrien (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 64390075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned char, a3), \ 64490075Sobrien (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 64590075Sobrien__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector unsigned char, a3), \ 64690075Sobrien (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 64790075Sobrien__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned char, a3), \ 64890075Sobrien (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 64990075Sobrien __altivec_link_error_invalid_argument ()))))))) 65090075Sobrien 65190075Sobrien#define vec_re(a1) __builtin_altivec_vrefp (a1) 65290075Sobrien 65390075Sobrien#define vec_rl(a1, a2) \ 65490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 65590075Sobrien (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2), \ 65690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 65790075Sobrien (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2), \ 65890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 65990075Sobrien (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2), \ 66090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 66190075Sobrien (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2), \ 66290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 66390075Sobrien (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2), \ 66490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 66590075Sobrien (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2), \ 66690075Sobrien __altivec_link_error_invalid_argument ())))))) 66790075Sobrien 66890075Sobrien#define vec_round(a1) __builtin_altivec_vrfin (a1) 66990075Sobrien 67090075Sobrien#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp (a1) 67190075Sobrien 67290075Sobrien#define vec_sel(a1, a2, a3) \ 67390075Sobrien__ch (__tern_args_eq (vector float, a1, vector float, a2, vector signed int, a3), \ 67490075Sobrien (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 67590075Sobrien__ch (__tern_args_eq (vector float, a1, vector float, a2, vector unsigned int, a3), \ 67690075Sobrien (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 67790075Sobrien__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector signed int, a3), \ 67890075Sobrien (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 67990075Sobrien__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector unsigned int, a3), \ 68090075Sobrien (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 68190075Sobrien__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector signed int, a3), \ 68290075Sobrien (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 68390075Sobrien__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector unsigned int, a3), \ 68490075Sobrien (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 68590075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed short, a3), \ 68690075Sobrien (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 68790075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector unsigned short, a3), \ 68890075Sobrien (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 68990075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector signed short, a3), \ 69090075Sobrien (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 69190075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned short, a3), \ 69290075Sobrien (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 69390075Sobrien__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector signed char, a3), \ 69490075Sobrien (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 69590075Sobrien__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector unsigned char, a3), \ 69690075Sobrien (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 69790075Sobrien__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector signed char, a3), \ 69890075Sobrien (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 69990075Sobrien__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned char, a3), \ 70090075Sobrien (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 70190075Sobrien __altivec_link_error_invalid_argument ())))))))))))))) 70290075Sobrien 70390075Sobrien#define vec_sl(a1, a2) \ 70490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 70590075Sobrien (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2), \ 70690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 70790075Sobrien (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2), \ 70890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 70990075Sobrien (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2), \ 71090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 71190075Sobrien (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2), \ 71290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 71390075Sobrien (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2), \ 71490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 71590075Sobrien (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2), \ 71690075Sobrien __altivec_link_error_invalid_argument ())))))) 71790075Sobrien 71890075Sobrien#define vec_sld(a1, a2, a3) \ 71990075Sobrien__ch (__tern_args_eq (vector float, a1, vector float, a2, const char, a3), \ 72090075Sobrien (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 72190075Sobrien__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, const char, a3), \ 72290075Sobrien (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 72390075Sobrien__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, const char, a3), \ 72490075Sobrien (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 72590075Sobrien__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, const char, a3), \ 72690075Sobrien (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 72790075Sobrien__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, const char, a3), \ 72890075Sobrien (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 72990075Sobrien__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, const char, a3), \ 73090075Sobrien (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 73190075Sobrien__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, const char, a3), \ 73290075Sobrien (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 73390075Sobrien __altivec_link_error_invalid_argument ()))))))) 73490075Sobrien 73590075Sobrien#define vec_sll(a1, a2) \ 73690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 73790075Sobrien (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 73890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned short, a2), \ 73990075Sobrien (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 74090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 74190075Sobrien (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 74290075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 74390075Sobrien (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 74490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned short, a2), \ 74590075Sobrien (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 74690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 74790075Sobrien (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 74890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned int, a2), \ 74990075Sobrien (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 75090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 75190075Sobrien (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 75290075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 75390075Sobrien (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 75490075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned int, a2), \ 75590075Sobrien (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 75690075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 75790075Sobrien (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 75890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 75990075Sobrien (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 76090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned int, a2), \ 76190075Sobrien (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 76290075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned short, a2), \ 76390075Sobrien (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 76490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 76590075Sobrien (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 76690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ 76790075Sobrien (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 76890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned short, a2), \ 76990075Sobrien (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 77090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 77190075Sobrien (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 77290075Sobrien __altivec_link_error_invalid_argument ())))))))))))))))))) 77390075Sobrien 77490075Sobrien#define vec_slo(a1, a2) \ 77590075Sobrien__ch (__bin_args_eq (vector float, a1, vector signed char, a2), \ 77690075Sobrien (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 77790075Sobrien__ch (__bin_args_eq (vector float, a1, vector unsigned char, a2), \ 77890075Sobrien (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 77990075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed char, a2), \ 78090075Sobrien (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 78190075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 78290075Sobrien (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 78390075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed char, a2), \ 78490075Sobrien (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 78590075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 78690075Sobrien (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 78790075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed char, a2), \ 78890075Sobrien (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 78990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 79090075Sobrien (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 79190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed char, a2), \ 79290075Sobrien (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 79390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 79490075Sobrien (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 79590075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 79690075Sobrien (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 79790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 79890075Sobrien (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 79990075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 80090075Sobrien (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 80190075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 80290075Sobrien (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 80390075Sobrien __altivec_link_error_invalid_argument ())))))))))))))) 80490075Sobrien 80590075Sobrien#define vec_splat(a1, a2) \ 80690075Sobrien__ch (__bin_args_eq (vector signed char, a1, const char, a2), \ 80790075Sobrien (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, (const char) a2), \ 80890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, const char, a2), \ 80990075Sobrien (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, (const char) a2), \ 81090075Sobrien__ch (__bin_args_eq (vector signed short, a1, const char, a2), \ 81190075Sobrien (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, (const char) a2), \ 81290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, const char, a2), \ 81390075Sobrien (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, (const char) a2), \ 81490075Sobrien__ch (__bin_args_eq (vector float, a1, const char, a2), \ 81590075Sobrien (vector float) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2), \ 81690075Sobrien__ch (__bin_args_eq (vector signed int, a1, const char, a2), \ 81790075Sobrien (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2), \ 81890075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, const char, a2), \ 81990075Sobrien (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2), \ 82090075Sobrien __altivec_link_error_invalid_argument ()))))))) 82190075Sobrien 82290075Sobrien#define vec_splat_s8(a1) __builtin_altivec_vspltisb (a1) 82390075Sobrien 82490075Sobrien#define vec_splat_s16(a1) __builtin_altivec_vspltish (a1) 82590075Sobrien 82690075Sobrien#define vec_splat_s32(a1) __builtin_altivec_vspltisw (a1) 82790075Sobrien 82890075Sobrien#define vec_splat_u8(a1) __builtin_altivec_vspltisb (a1) 82990075Sobrien 83090075Sobrien#define vec_splat_u16(a1) __builtin_altivec_vspltish (a1) 83190075Sobrien 83290075Sobrien#define vec_splat_u32(a1) __builtin_altivec_vspltisw (a1) 83390075Sobrien 83490075Sobrien#define vec_sr(a1, a2) \ 83590075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 83690075Sobrien (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2), \ 83790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 83890075Sobrien (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2), \ 83990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 84090075Sobrien (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2), \ 84190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 84290075Sobrien (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2), \ 84390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 84490075Sobrien (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2), \ 84590075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 84690075Sobrien (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2), \ 84790075Sobrien __altivec_link_error_invalid_argument ())))))) 84890075Sobrien 84990075Sobrien#define vec_sra(a1, a2) \ 85090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 85190075Sobrien (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2), \ 85290075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 85390075Sobrien (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2), \ 85490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 85590075Sobrien (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2), \ 85690075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 85790075Sobrien (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2), \ 85890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 85990075Sobrien (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2), \ 86090075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 86190075Sobrien (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2), \ 86290075Sobrien __altivec_link_error_invalid_argument ())))))) 86390075Sobrien 86490075Sobrien#define vec_srl(a1, a2) \ 86590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 86690075Sobrien (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 86790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned short, a2), \ 86890075Sobrien (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 86990075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 87090075Sobrien (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 87190075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 87290075Sobrien (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 87390075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned short, a2), \ 87490075Sobrien (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 87590075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 87690075Sobrien (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 87790075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned int, a2), \ 87890075Sobrien (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 87990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 88090075Sobrien (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 88190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 88290075Sobrien (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 88390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned int, a2), \ 88490075Sobrien (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 88590075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 88690075Sobrien (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 88790075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 88890075Sobrien (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 88990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned int, a2), \ 89090075Sobrien (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 89190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned short, a2), \ 89290075Sobrien (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 89390075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 89490075Sobrien (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 89590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ 89690075Sobrien (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 89790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned short, a2), \ 89890075Sobrien (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 89990075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 90090075Sobrien (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 90190075Sobrien __altivec_link_error_invalid_argument ())))))))))))))))))) 90290075Sobrien 90390075Sobrien#define vec_sro(a1, a2) \ 90490075Sobrien__ch (__bin_args_eq (vector float, a1, vector signed char, a2), \ 90590075Sobrien (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 90690075Sobrien__ch (__bin_args_eq (vector float, a1, vector unsigned char, a2), \ 90790075Sobrien (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 90890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed char, a2), \ 90990075Sobrien (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 91090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 91190075Sobrien (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 91290075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed char, a2), \ 91390075Sobrien (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 91490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 91590075Sobrien (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 91690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed char, a2), \ 91790075Sobrien (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 91890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 91990075Sobrien (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 92090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed char, a2), \ 92190075Sobrien (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 92290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 92390075Sobrien (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 92490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 92590075Sobrien (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 92690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 92790075Sobrien (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 92890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 92990075Sobrien (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 93090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 93190075Sobrien (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 93290075Sobrien __altivec_link_error_invalid_argument ())))))))))))))) 93390075Sobrien 93490075Sobrien#define vec_st(a1, a2, a3) \ 93590075Sobrien __builtin_altivec_stvx ((vector signed int) a1, a2, a3) 93690075Sobrien 93790075Sobrien#define vec_stl(a1, a2, a3) \ 93890075Sobrien __builtin_altivec_stvxl ((vector signed int) a1, a2, a3) 93990075Sobrien 94090075Sobrien#define vec_ste(a, b, c) \ 94190075Sobrien__ch (__un_args_eq (vector unsigned char, a), \ 94290075Sobrien __builtin_altivec_stvebx ((vector signed char) a, b, c), \ 94390075Sobrien__ch (__un_args_eq (vector signed char, a), \ 94490075Sobrien __builtin_altivec_stvebx ((vector signed char) a, b, c), \ 94590075Sobrien__ch (__un_args_eq (vector unsigned short, a), \ 94690075Sobrien __builtin_altivec_stvehx ((vector signed short) a, b, c), \ 94790075Sobrien__ch (__un_args_eq (vector signed short, a), \ 94890075Sobrien __builtin_altivec_stvehx ((vector signed short) a, b, c), \ 94990075Sobrien__ch (__un_args_eq (vector unsigned int, a), \ 95090075Sobrien __builtin_altivec_stvewx ((vector signed int) a, b, c), \ 95190075Sobrien__ch (__un_args_eq (vector signed int, a), \ 95290075Sobrien __builtin_altivec_stvewx ((vector signed int) a, b, c), \ 95390075Sobrien__ch (__un_args_eq (vector float, a), \ 95490075Sobrien __builtin_altivec_stvewx ((vector signed int) a, b, c), \ 95590075Sobrien __altivec_link_error_invalid_argument ()))))))) 95690075Sobrien 95790075Sobrien#define vec_sub(a1, a2) \ 95890075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 95990075Sobrien (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 96090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 96190075Sobrien (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 96290075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 96390075Sobrien (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 96490075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 96590075Sobrien (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 96690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 96790075Sobrien (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 96890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 96990075Sobrien (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 97090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 97190075Sobrien (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 97290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 97390075Sobrien (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 97490075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 97590075Sobrien (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 97690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 97790075Sobrien (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 97890075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 97990075Sobrien (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 98090075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 98190075Sobrien (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 98290075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 98390075Sobrien (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2), \ 98490075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 98590075Sobrien 98690075Sobrien#define vec_subc(a1, a2) __builtin_altivec_vsubcuw (a1, a2) 98790075Sobrien 98890075Sobrien#define vec_subs(a1, a2) \ 98990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 99090075Sobrien (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2), \ 99190075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 99290075Sobrien (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2), \ 99390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 99490075Sobrien (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2), \ 99590075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 99690075Sobrien (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2), \ 99790075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 99890075Sobrien (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2), \ 99990075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 100090075Sobrien (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2), \ 100190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 100290075Sobrien (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2), \ 100390075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 100490075Sobrien (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2), \ 100590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 100690075Sobrien (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2), \ 100790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 100890075Sobrien (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2), \ 100990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 101090075Sobrien (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2), \ 101190075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 101290075Sobrien (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2), \ 101390075Sobrien __altivec_link_error_invalid_argument ())))))))))))) 101490075Sobrien 101590075Sobrien#define vec_sum4s(a1, a2) \ 101690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ 101790075Sobrien (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2), \ 101890075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed int, a2), \ 101990075Sobrien (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2), \ 102090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed int, a2), \ 102190075Sobrien (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2), \ 102290075Sobrien __altivec_link_error_invalid_argument ()))) 102390075Sobrien 102490075Sobrien#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws (a1, a2) 102590075Sobrien 102690075Sobrien#define vec_sums(a1, a2) __builtin_altivec_vsumsws (a1, a2) 102790075Sobrien 102890075Sobrien#define vec_trunc(a1) __builtin_altivec_vrfiz (a1) 102990075Sobrien 103090075Sobrien#define vec_unpackh(a1) \ 103190075Sobrien__ch (__un_args_eq (vector signed char, a1), \ 103290075Sobrien (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1), \ 103390075Sobrien__ch (__un_args_eq (vector signed short, a1), \ 103490075Sobrien (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1), \ 103590075Sobrien__ch (__un_args_eq (vector signed short, a1), \ 103690075Sobrien (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1), \ 103790075Sobrien __altivec_link_error_invalid_argument ()))) 103890075Sobrien 103990075Sobrien#define vec_unpackl(a1) \ 104090075Sobrien__ch (__un_args_eq (vector signed char, a1), \ 104190075Sobrien (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1), \ 104290075Sobrien__ch (__un_args_eq (vector signed short, a1), \ 104390075Sobrien (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1), \ 104490075Sobrien__ch (__un_args_eq (vector signed short, a1), \ 104590075Sobrien (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1), \ 104690075Sobrien __altivec_link_error_invalid_argument ()))) 104790075Sobrien 104890075Sobrien#define vec_xor(a1, a2) \ 104990075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 105090075Sobrien (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 105190075Sobrien__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 105290075Sobrien (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 105390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 105490075Sobrien (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 105590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 105690075Sobrien (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 105790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 105890075Sobrien (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 105990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 106090075Sobrien (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 106190075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 106290075Sobrien (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 106390075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 106490075Sobrien (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 106590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 106690075Sobrien (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 106790075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 106890075Sobrien (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 106990075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 107090075Sobrien (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 107190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 107290075Sobrien (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 107390075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 107490075Sobrien (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 107590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 107690075Sobrien (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 107790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 107890075Sobrien (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 107990075Sobrien __altivec_link_error_invalid_argument ()))))))))))))))) 108090075Sobrien 108190075Sobrien#define vec_all_eq(a1, a2) \ 108290075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 108390075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 108490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 108590075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 108690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 108790075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 108890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 108990075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 109090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 109190075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 109290075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 109390075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 109490075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 109590075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 109690075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 109790075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 109890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 109990075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 110090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 110190075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 110290075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 110390075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 110490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 110590075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 110690075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 110790075Sobrien (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 110890075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 110990075Sobrien 111090075Sobrien#define vec_all_ge(a1, a2) \ 111190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 111290075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 111390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 111490075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 111590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 111690075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 111790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 111890075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 111990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 112090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 112190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 112290075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 112390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 112490075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 112590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 112690075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 112790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 112890075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 112990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 113090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 113190075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 113290075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 113390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 113490075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 113590075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 113690075Sobrien (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 113790075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 113890075Sobrien 113990075Sobrien#define vec_all_gt(a1, a2) \ 114090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 114190075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 114290075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 114390075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 114490075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 114590075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 114690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 114790075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 114890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 114990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 115090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 115190075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 115290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 115390075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 115490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 115590075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 115690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 115790075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 115890075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 115990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 116090075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 116190075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 116290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 116390075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 116490075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 116590075Sobrien (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 116690075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 116790075Sobrien 116890075Sobrien#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (a1, a2) 116990075Sobrien 117090075Sobrien#define vec_all_le(a1, a2) \ 117190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 117290075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 117390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 117490075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 117590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 117690075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 117790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 117890075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 117990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 118090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 118190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 118290075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 118390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 118490075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 118590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 118690075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 118790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 118890075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 118990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 119090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 119190075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 119290075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 119390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 119490075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 119590075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 119690075Sobrien (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 119790075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 119890075Sobrien 119990075Sobrien#define vec_all_lt(a1, a2) \ 120090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 120190075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 120290075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 120390075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 120490075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 120590075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 120690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 120790075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 120890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 120990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 121090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 121190075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 121290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 121390075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 121490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 121590075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 121690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 121790075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 121890075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 121990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 122090075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 122190075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 122290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 122390075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 122490075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 122590075Sobrien (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 122690075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 122790075Sobrien 122890075Sobrien#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (a1) 122990075Sobrien 123090075Sobrien#define vec_all_ne(a1, a2) \ 123190075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 123290075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 123390075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 123490075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 123590075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 123690075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 123790075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 123890075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 123990075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 124090075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 124190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 124290075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 124390075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 124490075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 124590075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 124690075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 124790075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 124890075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 124990075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 125090075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 125190075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 125290075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 125390075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 125490075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 125590075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 125690075Sobrien (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 125790075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 125890075Sobrien 125990075Sobrien#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 126090075Sobrien 126190075Sobrien#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 126290075Sobrien 126390075Sobrien#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 126490075Sobrien 126590075Sobrien#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 126690075Sobrien 126790075Sobrien#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (a1) 126890075Sobrien 126990075Sobrien#define vec_any_eq(a1, a2) \ 127090075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 127190075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 127290075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 127390075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 127490075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 127590075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 127690075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 127790075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 127890075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 127990075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 128090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 128190075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 128290075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 128390075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 128490075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 128590075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 128690075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 128790075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 128890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 128990075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 129090075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 129190075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 129290075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 129390075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 129490075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 129590075Sobrien (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 129690075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 129790075Sobrien 129890075Sobrien#define vec_any_ge(a1, a2) \ 129990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 130090075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 130190075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 130290075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 130390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 130490075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 130590075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 130690075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 130790075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 130890075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 130990075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 131090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 131190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 131290075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 131390075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 131490075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 131590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 131690075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 131790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 131890075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 131990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 132090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 132190075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 132290075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 132390075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 132490075Sobrien (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 132590075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 132690075Sobrien 132790075Sobrien#define vec_any_gt(a1, a2) \ 132890075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 132990075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 133090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 133190075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 133290075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 133390075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 133490075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 133590075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 133690075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 133790075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 133890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 133990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 134090075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 134190075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 134290075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 134390075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 134490075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 134590075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 134690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 134790075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 134890075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 134990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 135090075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 135190075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 135290075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 135390075Sobrien (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 135490075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 135590075Sobrien 135690075Sobrien#define vec_any_le(a1, a2) \ 135790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 135890075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 135990075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 136090075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 136190075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 136290075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 136390075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 136490075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 136590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 136690075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 136790075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 136890075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 136990075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 137090075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 137190075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 137290075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 137390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 137490075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 137590075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 137690075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 137790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 137890075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 137990075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 138090075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 138190075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 138290075Sobrien (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 138390075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 138490075Sobrien 138590075Sobrien#define vec_any_lt(a1, a2) \ 138690075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 138790075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 138890075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 138990075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 139090075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 139190075Sobrien (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 139290075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 139390075Sobrien (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 139490075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 139590075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 139690075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 139790075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 139890075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 139990075Sobrien (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 140090075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 140190075Sobrien (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 140290075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 140390075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 140490075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 140590075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 140690075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 140790075Sobrien (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 140890075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 140990075Sobrien (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 141090075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 141190075Sobrien (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 141290075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 141390075Sobrien 141490075Sobrien#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (a1) 141590075Sobrien 141690075Sobrien#define vec_any_ne(a1, a2) \ 141790075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 141890075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 141990075Sobrien__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 142090075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 142190075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 142290075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 142390075Sobrien__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 142490075Sobrien (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 142590075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 142690075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 142790075Sobrien__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 142890075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 142990075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 143090075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 143190075Sobrien__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 143290075Sobrien (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 143390075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 143490075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 143590075Sobrien__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 143690075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 143790075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 143890075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 143990075Sobrien__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 144090075Sobrien (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 144190075Sobrien__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 144290075Sobrien (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 144390075Sobrien __altivec_link_error_invalid_argument ()))))))))))))) 144490075Sobrien 144590075Sobrien#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 144690075Sobrien 144790075Sobrien#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 144890075Sobrien 144990075Sobrien#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 145090075Sobrien 145190075Sobrien#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 145290075Sobrien 145390075Sobrien#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (a1) 145490075Sobrien 145590075Sobrien#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (a1, a2) 145690075Sobrien 145790075Sobrien#endif /* __cplusplus */ 145890075Sobrien 145990075Sobrien#endif /* _ALTIVEC_H */ 1460