altivec.h revision 90075
150276Speter/* PowerPC AltiVec include file. 2184989Srafan Copyright (C) 2002 Free Software Foundation, Inc. 350276Speter Contributed by Aldy Hernandez (aldyh@redhat.com). 450276Speter 550276SpeterThis file is part of GNU CC. 650276Speter 750276SpeterGNU CC is free software; you can redistribute it and/or modify 850276Speterit under the terms of the GNU General Public License as published by 950276Speterthe Free Software Foundation; either version 2, or (at your option) 1050276Speterany later version. 1150276Speter 1250276SpeterGNU CC is distributed in the hope that it will be useful, 1350276Speterbut WITHOUT ANY WARRANTY; without even the implied warranty of 1450276SpeterMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1550276SpeterGNU General Public License for more details. 1650276Speter 1750276SpeterYou should have received a copy of the GNU General Public License 1850276Speteralong with GNU CC; see the file COPYING. If not, write to 1950276Speterthe Free Software Foundation, 59 Temple Place - Suite 330, 2050276SpeterBoston, MA 02111-1307, USA. */ 2150276Speter 2250276Speter/* As a special exception, if you include this header file into source 2350276Speter files compiled by GCC, this header file does not by itself cause 2450276Speter the resulting executable to be covered by the GNU General Public 2550276Speter License. This exception does not however invalidate any other 2650276Speter reasons why the executable file might be covered by the GNU General 2750276Speter Public License. */ 2850276Speter 2950276Speter/* Implemented to conform to the specification included in the AltiVec 3050276Speter Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */ 3150276Speter 3250276Speter#ifndef _ALTIVEC_H 3350276Speter#define _ALTIVEC_H 1 3450276Speter 3550276Speter/* Required by Motorola specs. */ 3650276Speter#define __VEC__ 10206 3750276Speter 3850276Speter#define __ALTIVEC__ 1 3950276Speter 4050276Speter#define __vector __attribute__((vector_size(16))) 41174993Srafan 4250276Speter/* Dummy prototype. */ 4366963Speterextern void __altivec_link_error_invalid_argument (); 4466963Speter 45184989Srafan/* You are allowed to undef this for C++ compatability. */ 4650276Speter#define vector __vector 4750276Speter 4866963Speter/* Helper macros. */ 4950276Speter 50184989Srafan#define __bin_args_eq(xtype, x, ytype, y) \ 5150276Speter (__builtin_types_compatible_p (xtype, typeof (x)) \ 5250276Speter && __builtin_types_compatible_p (ytype, typeof (y))) 5350276Speter 5450276Speter#define __un_args_eq(xtype, x) \ 5550276Speter __builtin_types_compatible_p (xtype, typeof (x)) 5666963Speter 5766963Speter#define __tern_args_eq(xtype, x, ytype, y, ztype, z) \ 5866963Speter (__builtin_types_compatible_p (xtype, typeof (x)) \ 5966963Speter && __builtin_types_compatible_p (ytype, typeof (y)) \ 6066963Speter && __builtin_types_compatible_p (ztype, typeof (z))) 6166963Speter 6250276Speter#define __ch(x, y, z) __builtin_choose_expr (x, y, z) 6366963Speter 6466963Speter#ifdef __cplusplus 6550276Speter 6662449Speter/* C++ stuff here. */ 6762449Speter 6850276Speter#else /* not C++ */ 6962449Speter 7050276Speter/* Hairy macros that implement the AltiVec high-level programming 7162449Speter interface for C. */ 72166124Srafan 7362449Speter#define vec_add(a1, a2) \ 7462449Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 7562449Speter (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 76166124Srafan__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 7750276Speter (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 7850276Speter__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 7962449Speter (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 8062449Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 8150276Speter (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2), \ 8266963Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 83166124Srafan (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 8450276Speter__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 8550276Speter (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 8666963Speter__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 8766963Speter (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 8866963Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 8966963Speter (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2), \ 9066963Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 9166963Speter (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9266963Speter__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 9366963Speter (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9466963Speter__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 9566963Speter (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9666963Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 9766963Speter (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2), \ 9866963Speter__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 9966963Speter (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2), \ 10066963Speter __altivec_link_error_invalid_argument ()))))))))))))) 10166963Speter 10276726Speter#define vec_addc(a1, a2) __builtin_altivec_vaddcuw (a1, a2) 10366963Speter 10466963Speter#define vec_adds(a1, a2) \ 10566963Speter__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 10666963Speter (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2), \ 10766963Speter__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 10866963Speter (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2), \ 10966963Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 11066963Speter (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2), \ 11166963Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 11266963Speter (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2), \ 11366963Speter__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 11466963Speter (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2), \ 11566963Speter__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 11666963Speter (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2), \ 11766963Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 11866963Speter (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2), \ 11966963Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 12066963Speter (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2), \ 12166963Speter__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 12266963Speter (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2), \ 12366963Speter__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 12466963Speter (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2), \ 12566963Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 12666963Speter (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2), \ 12766963Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 12866963Speter (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2), \ 12962449Speter __altivec_link_error_invalid_argument ())))))))))))) 130166124Srafan 131166124Srafan#define vec_and(a1, a2) \ 132166124Srafan__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 133166124Srafan (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 134166124Srafan__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 135166124Srafan (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 136166124Srafan__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 137166124Srafan (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 138166124Srafan__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 139166124Srafan (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 140166124Srafan__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 141166124Srafan (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 142166124Srafan__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 143166124Srafan (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 144166124Srafan__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 145166124Srafan (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 146166124Srafan__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 147166124Srafan (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 148166124Srafan__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 14962449Speter (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15050276Speter__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 15162449Speter (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15262449Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 15362449Speter (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15466963Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 15562449Speter (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15650276Speter__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 15797049Speter (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 15897049Speter__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 15997049Speter (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 16066963Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 16162449Speter (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2), \ 16262449Speter __altivec_link_error_invalid_argument ()))))))))))))))) 16350276Speter 16462449Speter#define vec_andc(a1, a2) \ 16550276Speter__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 16666963Speter (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 16762449Speter__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 16862449Speter (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 16962449Speter__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 17062449Speter (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17162449Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 17250276Speter (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17366963Speter__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 17462449Speter (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17562449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 17662449Speter (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17762449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 17862449Speter (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 17950276Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 18097049Speter (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18162449Speter__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 182166124Srafan (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18397049Speter__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 18497049Speter (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18597049Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 18697049Speter (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 18797049Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 188166124Srafan (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 189166124Srafan__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 19097049Speter (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 19197049Speter__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 19297049Speter (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 19397049Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 19497049Speter (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2), \ 19562449Speter __altivec_link_error_invalid_argument ()))))))))))))))) 19662449Speter 19762449Speter#define vec_avg(a1, a2) \ 19862449Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 19962449Speter (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2), \ 20062449Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 20162449Speter (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2), \ 20262449Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 203166124Srafan (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2), \ 20462449Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 20562449Speter (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2), \ 20662449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 20750276Speter (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2), \ 20862449Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 20962449Speter (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2), \ 21062449Speter __altivec_link_error_invalid_argument ())))))) 21162449Speter 21262449Speter#define vec_ceil(a1) __builtin_altivec_vrfip (a1) 21362449Speter 21462449Speter#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp (a1, a2) 21562449Speter 21662449Speter#define vec_cmpeq(a1, a2) \ 21750276Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 21862449Speter (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2), \ 21962449Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 22062449Speter (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2), \ 22162449Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 222166124Srafan (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2), \ 22362449Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 22462449Speter (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2), \ 22562449Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 22662449Speter (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2), \ 22762449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 22850276Speter (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2), \ 22950276Speter__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 23062449Speter (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2), \ 23162449Speter __altivec_link_error_invalid_argument ()))))))) 23250276Speter 23366963Speter#define vec_cmpge(a1, a2) __builtin_altivec_vcmpgefp (a1, a2) 23462449Speter 23562449Speter#define vec_cmpgt(a1, a2) \ 236166124Srafan__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 23762449Speter (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2), \ 23862449Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 23962449Speter (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2), \ 24062449Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 24162449Speter (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2), \ 24262449Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 24362449Speter (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2), \ 24462449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 245166124Srafan (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2), \ 24662449Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 24762449Speter (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2), \ 24862449Speter__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 24962449Speter (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2), \ 25062449Speter __altivec_link_error_invalid_argument ()))))))) 25150276Speter 25262449Speter#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp (a1, a2) 25350276Speter 25466963Speter#define vec_cmplt(a1, a2) \ 25562449Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 256166124Srafan (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2), \ 257166124Srafan__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 25850276Speter (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2), \ 25962449Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 26062449Speter (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2), \ 26162449Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 26250276Speter (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2), \ 26362449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 26462449Speter (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2), \ 26562449Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 26662449Speter (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2), \ 26766963Speter__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 26862449Speter (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2), \ 26962449Speter __altivec_link_error_invalid_argument ()))))))) 27050276Speter 27162449Speter#define vec_ctf(a1, a2) \ 27262449Speter__ch (__bin_args_eq (vector unsigned int, a1, const char, a2), \ 27362449Speter (vector float) __builtin_altivec_vcfux ((vector signed int) a1, (const char) a2), \ 27462449Speter__ch (__bin_args_eq (vector signed int, a1, const char, a2), \ 27562449Speter (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, (const char) a2), \ 27662449Speter __altivec_link_error_invalid_argument ())) 27750276Speter 27862449Speter#define vec_cts(a1, a2) __builtin_altivec_vctsxs (a1, a2) 27962449Speter 28062449Speter#define vec_ctu(a1, a2) __builtin_altivec_vctuxs (a1, a2) 28162449Speter 28250276Speter#define vec_dss(a1) __builtin_altivec_dss (a1) 28362449Speter 28462449Speter#define vec_dssall() __builtin_altivec_dssall () 28562449Speter 28662449Speter#define vec_dst(a1, a2, a3) __builtin_altivec_dst (a1, a2, a3) 28762449Speter 28862449Speter#define vec_dstst(a1, a2, a3) __builtin_altivec_dstst (a1, a2, a3) 28950276Speter 29050276Speter#define vec_dststt(a1, a2, a3) __builtin_altivec_dststt (a1, a2, a3) 29162449Speter 292166124Srafan#define vec_dstt(a1, a2, a3) __builtin_altivec_dstt (a1, a2, a3) 29362449Speter 29462449Speter#define vec_expte(a1) __builtin_altivec_vexptefp (a1) 295166124Srafan 29662449Speter#define vec_floor(a1) __builtin_altivec_vrfim (a1) 297166124Srafan 29866963Speter#define vec_ld(a, b) \ 29962449Speter__ch (__un_args_eq (vector unsigned char *, b), \ 30062449Speter (vector unsigned char) __builtin_altivec_lvx (a, b), \ 301166124Srafan__ch (__un_args_eq (unsigned char *, b), \ 302166124Srafan (vector unsigned char) __builtin_altivec_lvx (a, b), \ 303166124Srafan__ch (__un_args_eq (vector signed char *, b), \ 304166124Srafan (vector signed char) __builtin_altivec_lvx (a, b), \ 30550276Speter__ch (__un_args_eq (signed char *, b), \ 30662449Speter (vector signed char) __builtin_altivec_lvx (a, b), \ 30762449Speter__ch (__un_args_eq (vector unsigned short *, b), \ 30862449Speter (vector unsigned short) __builtin_altivec_lvx (a, b), \ 30962449Speter__ch (__un_args_eq (unsigned short *, b), \ 31050276Speter (vector unsigned short) __builtin_altivec_lvx (a, b), \ 31162449Speter__ch (__un_args_eq (vector signed short *, b), \ 31266963Speter (vector signed short) __builtin_altivec_lvx (a, b), \ 31366963Speter__ch (__un_args_eq (signed short *, b), \ 31466963Speter (vector signed short) __builtin_altivec_lvx (a, b), \ 31566963Speter__ch (__un_args_eq (vector unsigned int *, b), \ 31666963Speter (vector unsigned int) __builtin_altivec_lvx (a, b), \ 31762449Speter__ch (__un_args_eq (unsigned int *, b), \ 318166124Srafan (vector unsigned int) __builtin_altivec_lvx (a, b), \ 31966963Speter__ch (__un_args_eq (vector signed int *, b), \ 32066963Speter (vector signed int) __builtin_altivec_lvx (a, b), \ 32166963Speter__ch (__un_args_eq (signed int *, b), \ 32250276Speter (vector signed int) __builtin_altivec_lvx (a, b), \ 32366963Speter__ch (__un_args_eq (vector float *, b), \ 32466963Speter (vector float) __builtin_altivec_lvx (a, b), \ 325166124Srafan__ch (__un_args_eq (float *, b), \ 32666963Speter (vector float) __builtin_altivec_lvx (a, b), \ 32766963Speter__altivec_link_error_invalid_argument ())))))))))))))) 328166124Srafan 32966963Speter#define vec_lde(a, b) \ 330174993Srafan__ch (__un_args_eq (unsigned char *, b), \ 33166963Speter (vector unsigned char) __builtin_altivec_lvebx (a, b), \ 332166124Srafan__ch (__un_args_eq (signed char *, b), \ 333166124Srafan (vector signed char) __builtin_altivec_lvebx (a, b), \ 334166124Srafan__ch (__un_args_eq (unsigned short *, b), \ 335166124Srafan (vector unsigned short) __builtin_altivec_lvehx (a, b), \ 336166124Srafan__ch (__un_args_eq (signed short *, b), \ 337166124Srafan (vector signed short) __builtin_altivec_lvehx (a, b), \ 338166124Srafan__ch (__un_args_eq (unsigned int *, b), \ 339166124Srafan (vector unsigned int) __builtin_altivec_lvewx (a, b), \ 340166124Srafan__ch (__un_args_eq (signed int *, b), \ 341166124Srafan (vector signed int) __builtin_altivec_lvewx (a, b), \ 342166124Srafan__altivec_link_error_invalid_argument ())))))) 343166124Srafan 34466963Speter#define vec_ldl(a, b) \ 34566963Speter__ch (__un_args_eq (vector unsigned char *, b), \ 34650276Speter (vector unsigned char) __builtin_altivec_lvxl (a, b), \ 34762449Speter__ch (__un_args_eq (unsigned char *, b), \ 34862449Speter (vector unsigned char) __builtin_altivec_lvxl (a, b), \ 34962449Speter__ch (__un_args_eq (vector signed char *, b), \ 350166124Srafan (vector signed char) __builtin_altivec_lvxl (a, b), \ 35162449Speter__ch (__un_args_eq (signed char *, b), \ 352166124Srafan (vector signed char) __builtin_altivec_lvxl (a, b), \ 35350276Speter__ch (__un_args_eq (vector unsigned short *, b), \ 35450276Speter (vector unsigned short) __builtin_altivec_lvxl (a, b), \ 35562449Speter__ch (__un_args_eq (unsigned short *, b), \ 35662449Speter (vector unsigned short) __builtin_altivec_lvxl (a, b), \ 35750276Speter__ch (__un_args_eq (vector signed short *, b), \ 35866963Speter (vector signed short) __builtin_altivec_lvxl (a, b), \ 35966963Speter__ch (__un_args_eq (signed short *, b), \ 36066963Speter (vector signed short) __builtin_altivec_lvxl (a, b), \ 36162449Speter__ch (__un_args_eq (vector unsigned int *, b), \ 36262449Speter (vector unsigned int) __builtin_altivec_lvxl (a, b), \ 363166124Srafan__ch (__un_args_eq (unsigned int *, b), \ 36450276Speter (vector unsigned int) __builtin_altivec_lvxl (a, b), \ 36597049Speter__ch (__un_args_eq (vector signed int *, b), \ 36650276Speter (vector signed int) __builtin_altivec_lvxl (a, b), \ 36762449Speter__ch (__un_args_eq (signed int *, b), \ 36850276Speter (vector signed int) __builtin_altivec_lvxl (a, b), \ 369174993Srafan__ch (__un_args_eq (vector float *, b), \ 37062449Speter (vector float) __builtin_altivec_lvxl (a, b), \ 37162449Speter__ch (__un_args_eq (float *, b), \ 37266963Speter (vector float) __builtin_altivec_lvxl (a, b), \ 37362449Speter__altivec_link_error_invalid_argument ())))))))))))))) 37462449Speter 37562449Speter#define vec_loge(a1) __builtin_altivec_vlogefp (a1) 37662449Speter 37762449Speter#define vec_lvsl(a1, a2) __builtin_altivec_lvsl (a1, a2) 37866963Speter 37966963Speter#define vec_lvsr(a1, a2) __builtin_altivec_lvsr (a1, a2) 380166124Srafan 38162449Speter#define vec_madd(a1, a2, a3) __builtin_altivec_vmaddfp (a1, a2, a3) 38262449Speter 38362449Speter#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs (a1, a2, a3) 38450276Speter 38566963Speter#define vec_max(a1, a2) \ 38650276Speter__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 38766963Speter (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2), \ 38866963Speter__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 38966963Speter (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2), \ 39066963Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 39166963Speter (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2), \ 39266963Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 39366963Speter (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2), \ 39466963Speter__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 39566963Speter (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2), \ 39666963Speter__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 39766963Speter (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2), \ 39866963Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 39962449Speter (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2), \ 40050276Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 40162449Speter (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2), \ 40262449Speter__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 40350276Speter (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2), \ 40462449Speter__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 40562449Speter (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2), \ 40650276Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 40766963Speter (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2), \ 40866963Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 40966963Speter (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2), \ 410166124Srafan__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 41166963Speter (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2), \ 41250276Speter __altivec_link_error_invalid_argument ()))))))))))))) 41362449Speter 41462449Speter#define vec_mergeh(a1, a2) \ 41562449Speter__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 41662449Speter (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2), \ 41750276Speter__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 41862449Speter (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2), \ 41962449Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 42097049Speter (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2), \ 42162449Speter__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 42297049Speter (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2), \ 42362449Speter__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 42497049Speter (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2), \ 42597049Speter__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 42697049Speter (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2), \ 42750276Speter__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 42862449Speter (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2), \ 42950276Speter __altivec_link_error_invalid_argument ()))))))) 43097049Speter 431166124Srafan#define vec_mergel(a1, a2) \ 432166124Srafan__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 433166124Srafan (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2), \ 434166124Srafan__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 435166124Srafan (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2), \ 43662449Speter__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 43762449Speter (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2), \ 438166124Srafan__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 43950276Speter (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2), \ 440__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 441 (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2), \ 442__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 443 (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2), \ 444__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 445 (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2), \ 446 __altivec_link_error_invalid_argument ()))))))) 447 448#define vec_mfvscr() __builtin_altivec_mfvscr () 449 450#define vec_min(a1, a2) \ 451__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 452 (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2), \ 453__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 454 (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2), \ 455__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 456 (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2), \ 457__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 458 (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2), \ 459__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 460 (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2), \ 461__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 462 (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2), \ 463__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 464 (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2), \ 465__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 466 (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2), \ 467__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 468 (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2), \ 469__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 470 (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2), \ 471__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 472 (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2), \ 473__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 474 (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2), \ 475__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 476 (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2), \ 477 __altivec_link_error_invalid_argument ()))))))))))))) 478 479#define vec_mladd(a1, a2, a3) \ 480__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed short, a3), \ 481 (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 482__ch (__tern_args_eq (vector signed short, a1, vector unsigned short, a2, vector unsigned short, a3), \ 483 (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 484__ch (__tern_args_eq (vector unsigned short, a1, vector signed short, a2, vector signed short, a3), \ 485 (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 486__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned short, a3), \ 487 (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3), \ 488 __altivec_link_error_invalid_argument ())))) 489 490#define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs (a1, a2, a3) 491 492#define vec_msum(a1, a2, a3) \ 493__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned int, a3), \ 494 (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3), \ 495__ch (__tern_args_eq (vector signed char, a1, vector unsigned char, a2, vector signed int, a3), \ 496 (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3), \ 497__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned int, a3), \ 498 (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 499__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed int, a3), \ 500 (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 501 __altivec_link_error_invalid_argument ())))) 502 503#define vec_msums(a1, a2, a3) \ 504__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned int, a3), \ 505 (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 506__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed int, a3), \ 507 (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3), \ 508 __altivec_link_error_invalid_argument ())) 509 510#define vec_mtvscr(a1) \ 511__ch (__un_args_eq (vector signed int, a1), \ 512 __builtin_altivec_mtvscr ((vector signed int) a1), \ 513__ch (__un_args_eq (vector unsigned int, a1), \ 514 __builtin_altivec_mtvscr ((vector signed int) a1), \ 515__ch (__un_args_eq (vector signed short, a1), \ 516 __builtin_altivec_mtvscr ((vector signed int) a1), \ 517__ch (__un_args_eq (vector unsigned short, a1), \ 518 __builtin_altivec_mtvscr ((vector signed int) a1), \ 519__ch (__un_args_eq (vector signed char, a1), \ 520 __builtin_altivec_mtvscr ((vector signed int) a1), \ 521__ch (__un_args_eq (vector unsigned char, a1), \ 522 __builtin_altivec_mtvscr ((vector signed int) a1), \ 523 __altivec_link_error_invalid_argument ())))))) 524 525#define vec_mule(a1, a2) \ 526__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 527 (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2), \ 528__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 529 (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2), \ 530__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 531 (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2), \ 532__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 533 (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2), \ 534 __altivec_link_error_invalid_argument ())))) 535 536#define vec_mulo(a1, a2) \ 537__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 538 (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2), \ 539__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 540 (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2), \ 541__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 542 (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2), \ 543__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 544 (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2), \ 545 __altivec_link_error_invalid_argument ())))) 546 547#define vec_nmsub(a1, a2, a3) __builtin_altivec_vnmsubfp (a1, a2, a3) 548 549#define vec_nor(a1, a2) \ 550__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 551 (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 552__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 553 (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 554__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 555 (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 556__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 557 (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 558__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 559 (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 560__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 561 (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 562__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 563 (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2), \ 564 __altivec_link_error_invalid_argument ()))))))) 565 566#define vec_or(a1, a2) \ 567__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 568 (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 569__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 570 (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 571__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 572 (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 573__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 574 (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 575__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 576 (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 577__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 578 (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 579__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 580 (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 581__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 582 (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 583__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 584 (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 585__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 586 (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 587__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 588 (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 589__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 590 (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 591__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 592 (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 593__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 594 (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 595__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 596 (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2), \ 597 __altivec_link_error_invalid_argument ()))))))))))))))) 598 599#define vec_pack(a1, a2) \ 600__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 601 (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2), \ 602__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 603 (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2), \ 604__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 605 (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2), \ 606__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 607 (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2), \ 608 __altivec_link_error_invalid_argument ())))) 609 610#define vec_packpx(a1, a2) __builtin_altivec_vpkpx (a1, a2) 611 612#define vec_packs(a1, a2) \ 613__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 614 (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2), \ 615__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 616 (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2), \ 617__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 618 (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2), \ 619__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 620 (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2), \ 621 __altivec_link_error_invalid_argument ())))) 622 623#define vec_packsu(a1, a2) \ 624__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 625 (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2), \ 626__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 627 (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2), \ 628__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 629 (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2), \ 630__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 631 (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2), \ 632 __altivec_link_error_invalid_argument ())))) 633 634#define vec_perm(a1, a2, a3, a4) \ 635__ch (__tern_args_eq (vector float, a1, vector float, a2, vector unsigned char, a3), \ 636 (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 637__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector unsigned char, a3), \ 638 (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 639__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector unsigned char, a3), \ 640 (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 641__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector unsigned char, a3), \ 642 (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 643__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned char, a3), \ 644 (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 645__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector unsigned char, a3), \ 646 (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 647__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned char, a3), \ 648 (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3), \ 649 __altivec_link_error_invalid_argument ()))))))) 650 651#define vec_re(a1) __builtin_altivec_vrefp (a1) 652 653#define vec_rl(a1, a2) \ 654__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 655 (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2), \ 656__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 657 (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2), \ 658__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 659 (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2), \ 660__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 661 (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2), \ 662__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 663 (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2), \ 664__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 665 (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2), \ 666 __altivec_link_error_invalid_argument ())))))) 667 668#define vec_round(a1) __builtin_altivec_vrfin (a1) 669 670#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp (a1) 671 672#define vec_sel(a1, a2, a3) \ 673__ch (__tern_args_eq (vector float, a1, vector float, a2, vector signed int, a3), \ 674 (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 675__ch (__tern_args_eq (vector float, a1, vector float, a2, vector unsigned int, a3), \ 676 (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 677__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector signed int, a3), \ 678 (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 679__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector unsigned int, a3), \ 680 (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 681__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector signed int, a3), \ 682 (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 683__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector unsigned int, a3), \ 684 (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 685__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed short, a3), \ 686 (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 687__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector unsigned short, a3), \ 688 (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 689__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector signed short, a3), \ 690 (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 691__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned short, a3), \ 692 (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 693__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector signed char, a3), \ 694 (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 695__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector unsigned char, a3), \ 696 (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 697__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector signed char, a3), \ 698 (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 699__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned char, a3), \ 700 (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3), \ 701 __altivec_link_error_invalid_argument ())))))))))))))) 702 703#define vec_sl(a1, a2) \ 704__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 705 (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2), \ 706__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 707 (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2), \ 708__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 709 (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2), \ 710__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 711 (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2), \ 712__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 713 (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2), \ 714__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 715 (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2), \ 716 __altivec_link_error_invalid_argument ())))))) 717 718#define vec_sld(a1, a2, a3) \ 719__ch (__tern_args_eq (vector float, a1, vector float, a2, const char, a3), \ 720 (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 721__ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, const char, a3), \ 722 (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 723__ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, const char, a3), \ 724 (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 725__ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, const char, a3), \ 726 (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 727__ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, const char, a3), \ 728 (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 729__ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, const char, a3), \ 730 (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 731__ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, const char, a3), \ 732 (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3), \ 733 __altivec_link_error_invalid_argument ()))))))) 734 735#define vec_sll(a1, a2) \ 736__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 737 (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 738__ch (__bin_args_eq (vector signed int, a1, vector unsigned short, a2), \ 739 (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 740__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 741 (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 742__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 743 (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 744__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned short, a2), \ 745 (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 746__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 747 (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 748__ch (__bin_args_eq (vector signed short, a1, vector unsigned int, a2), \ 749 (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 750__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 751 (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 752__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 753 (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 754__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned int, a2), \ 755 (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 756__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 757 (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 758__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 759 (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 760__ch (__bin_args_eq (vector signed char, a1, vector unsigned int, a2), \ 761 (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 762__ch (__bin_args_eq (vector signed char, a1, vector unsigned short, a2), \ 763 (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 764__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 765 (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 766__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ 767 (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 768__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned short, a2), \ 769 (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 770__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 771 (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2), \ 772 __altivec_link_error_invalid_argument ())))))))))))))))))) 773 774#define vec_slo(a1, a2) \ 775__ch (__bin_args_eq (vector float, a1, vector signed char, a2), \ 776 (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 777__ch (__bin_args_eq (vector float, a1, vector unsigned char, a2), \ 778 (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 779__ch (__bin_args_eq (vector signed int, a1, vector signed char, a2), \ 780 (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 781__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 782 (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 783__ch (__bin_args_eq (vector unsigned int, a1, vector signed char, a2), \ 784 (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 785__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 786 (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 787__ch (__bin_args_eq (vector signed short, a1, vector signed char, a2), \ 788 (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 789__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 790 (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 791__ch (__bin_args_eq (vector unsigned short, a1, vector signed char, a2), \ 792 (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 793__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 794 (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 795__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 796 (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 797__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 798 (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 799__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 800 (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 801__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 802 (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2), \ 803 __altivec_link_error_invalid_argument ())))))))))))))) 804 805#define vec_splat(a1, a2) \ 806__ch (__bin_args_eq (vector signed char, a1, const char, a2), \ 807 (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, (const char) a2), \ 808__ch (__bin_args_eq (vector unsigned char, a1, const char, a2), \ 809 (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, (const char) a2), \ 810__ch (__bin_args_eq (vector signed short, a1, const char, a2), \ 811 (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, (const char) a2), \ 812__ch (__bin_args_eq (vector unsigned short, a1, const char, a2), \ 813 (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, (const char) a2), \ 814__ch (__bin_args_eq (vector float, a1, const char, a2), \ 815 (vector float) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2), \ 816__ch (__bin_args_eq (vector signed int, a1, const char, a2), \ 817 (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2), \ 818__ch (__bin_args_eq (vector unsigned int, a1, const char, a2), \ 819 (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2), \ 820 __altivec_link_error_invalid_argument ()))))))) 821 822#define vec_splat_s8(a1) __builtin_altivec_vspltisb (a1) 823 824#define vec_splat_s16(a1) __builtin_altivec_vspltish (a1) 825 826#define vec_splat_s32(a1) __builtin_altivec_vspltisw (a1) 827 828#define vec_splat_u8(a1) __builtin_altivec_vspltisb (a1) 829 830#define vec_splat_u16(a1) __builtin_altivec_vspltish (a1) 831 832#define vec_splat_u32(a1) __builtin_altivec_vspltisw (a1) 833 834#define vec_sr(a1, a2) \ 835__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 836 (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2), \ 837__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 838 (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2), \ 839__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 840 (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2), \ 841__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 842 (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2), \ 843__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 844 (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2), \ 845__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 846 (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2), \ 847 __altivec_link_error_invalid_argument ())))))) 848 849#define vec_sra(a1, a2) \ 850__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 851 (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2), \ 852__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 853 (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2), \ 854__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 855 (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2), \ 856__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 857 (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2), \ 858__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 859 (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2), \ 860__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 861 (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2), \ 862 __altivec_link_error_invalid_argument ())))))) 863 864#define vec_srl(a1, a2) \ 865__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 866 (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 867__ch (__bin_args_eq (vector signed int, a1, vector unsigned short, a2), \ 868 (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 869__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 870 (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 871__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 872 (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 873__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned short, a2), \ 874 (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 875__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 876 (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 877__ch (__bin_args_eq (vector signed short, a1, vector unsigned int, a2), \ 878 (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 879__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 880 (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 881__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 882 (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 883__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned int, a2), \ 884 (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 885__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 886 (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 887__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 888 (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 889__ch (__bin_args_eq (vector signed char, a1, vector unsigned int, a2), \ 890 (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 891__ch (__bin_args_eq (vector signed char, a1, vector unsigned short, a2), \ 892 (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 893__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 894 (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 895__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ 896 (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 897__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned short, a2), \ 898 (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 899__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 900 (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2), \ 901 __altivec_link_error_invalid_argument ())))))))))))))))))) 902 903#define vec_sro(a1, a2) \ 904__ch (__bin_args_eq (vector float, a1, vector signed char, a2), \ 905 (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 906__ch (__bin_args_eq (vector float, a1, vector unsigned char, a2), \ 907 (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 908__ch (__bin_args_eq (vector signed int, a1, vector signed char, a2), \ 909 (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 910__ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ 911 (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 912__ch (__bin_args_eq (vector unsigned int, a1, vector signed char, a2), \ 913 (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 914__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ 915 (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 916__ch (__bin_args_eq (vector signed short, a1, vector signed char, a2), \ 917 (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 918__ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ 919 (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 920__ch (__bin_args_eq (vector unsigned short, a1, vector signed char, a2), \ 921 (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 922__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ 923 (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 924__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 925 (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 926__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 927 (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 928__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 929 (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 930__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 931 (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2), \ 932 __altivec_link_error_invalid_argument ())))))))))))))) 933 934#define vec_st(a1, a2, a3) \ 935 __builtin_altivec_stvx ((vector signed int) a1, a2, a3) 936 937#define vec_stl(a1, a2, a3) \ 938 __builtin_altivec_stvxl ((vector signed int) a1, a2, a3) 939 940#define vec_ste(a, b, c) \ 941__ch (__un_args_eq (vector unsigned char, a), \ 942 __builtin_altivec_stvebx ((vector signed char) a, b, c), \ 943__ch (__un_args_eq (vector signed char, a), \ 944 __builtin_altivec_stvebx ((vector signed char) a, b, c), \ 945__ch (__un_args_eq (vector unsigned short, a), \ 946 __builtin_altivec_stvehx ((vector signed short) a, b, c), \ 947__ch (__un_args_eq (vector signed short, a), \ 948 __builtin_altivec_stvehx ((vector signed short) a, b, c), \ 949__ch (__un_args_eq (vector unsigned int, a), \ 950 __builtin_altivec_stvewx ((vector signed int) a, b, c), \ 951__ch (__un_args_eq (vector signed int, a), \ 952 __builtin_altivec_stvewx ((vector signed int) a, b, c), \ 953__ch (__un_args_eq (vector float, a), \ 954 __builtin_altivec_stvewx ((vector signed int) a, b, c), \ 955 __altivec_link_error_invalid_argument ()))))))) 956 957#define vec_sub(a1, a2) \ 958__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 959 (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 960__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 961 (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 962__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 963 (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 964__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 965 (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2), \ 966__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 967 (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 968__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 969 (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 970__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 971 (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 972__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 973 (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2), \ 974__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 975 (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 976__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 977 (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 978__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 979 (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 980__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 981 (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2), \ 982__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 983 (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2), \ 984 __altivec_link_error_invalid_argument ()))))))))))))) 985 986#define vec_subc(a1, a2) __builtin_altivec_vsubcuw (a1, a2) 987 988#define vec_subs(a1, a2) \ 989__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 990 (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2), \ 991__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 992 (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2), \ 993__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 994 (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2), \ 995__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 996 (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2), \ 997__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 998 (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2), \ 999__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1000 (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2), \ 1001__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1002 (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2), \ 1003__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1004 (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2), \ 1005__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1006 (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2), \ 1007__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1008 (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2), \ 1009__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1010 (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2), \ 1011__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1012 (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2), \ 1013 __altivec_link_error_invalid_argument ())))))))))))) 1014 1015#define vec_sum4s(a1, a2) \ 1016__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ 1017 (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2), \ 1018__ch (__bin_args_eq (vector signed char, a1, vector signed int, a2), \ 1019 (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2), \ 1020__ch (__bin_args_eq (vector signed short, a1, vector signed int, a2), \ 1021 (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2), \ 1022 __altivec_link_error_invalid_argument ()))) 1023 1024#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws (a1, a2) 1025 1026#define vec_sums(a1, a2) __builtin_altivec_vsumsws (a1, a2) 1027 1028#define vec_trunc(a1) __builtin_altivec_vrfiz (a1) 1029 1030#define vec_unpackh(a1) \ 1031__ch (__un_args_eq (vector signed char, a1), \ 1032 (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1), \ 1033__ch (__un_args_eq (vector signed short, a1), \ 1034 (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1), \ 1035__ch (__un_args_eq (vector signed short, a1), \ 1036 (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1), \ 1037 __altivec_link_error_invalid_argument ()))) 1038 1039#define vec_unpackl(a1) \ 1040__ch (__un_args_eq (vector signed char, a1), \ 1041 (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1), \ 1042__ch (__un_args_eq (vector signed short, a1), \ 1043 (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1), \ 1044__ch (__un_args_eq (vector signed short, a1), \ 1045 (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1), \ 1046 __altivec_link_error_invalid_argument ()))) 1047 1048#define vec_xor(a1, a2) \ 1049__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1050 (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1051__ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ 1052 (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1053__ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ 1054 (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1055__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1056 (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1057__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1058 (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1059__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1060 (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1061__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1062 (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1063__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1064 (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1065__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1066 (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1067__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1068 (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1069__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1070 (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1071__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1072 (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1073__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1074 (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1075__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1076 (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1077__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1078 (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2), \ 1079 __altivec_link_error_invalid_argument ()))))))))))))))) 1080 1081#define vec_all_eq(a1, a2) \ 1082__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1083 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1084__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1085 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1086__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1087 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1088__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1089 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1090__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1091 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1092__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1093 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1094__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1095 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1096__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1097 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1098__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1099 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1100__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1101 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1102__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1103 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1104__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1105 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1106__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1107 (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 1108 __altivec_link_error_invalid_argument ()))))))))))))) 1109 1110#define vec_all_ge(a1, a2) \ 1111__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1112 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1113__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1114 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1115__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1116 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1117__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1118 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1119__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1120 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1121__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1122 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1123__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1124 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1125__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1126 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1127__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1128 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1129__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1130 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1131__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1132 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1133__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1134 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1135__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1136 (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 1137 __altivec_link_error_invalid_argument ()))))))))))))) 1138 1139#define vec_all_gt(a1, a2) \ 1140__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1141 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1142__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1143 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1144__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1145 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1146__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1147 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1148__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1149 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1150__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1151 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1152__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1153 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1154__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1155 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1156__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1157 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1158__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1159 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1160__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1161 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1162__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1163 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1164__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1165 (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 1166 __altivec_link_error_invalid_argument ()))))))))))))) 1167 1168#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (a1, a2) 1169 1170#define vec_all_le(a1, a2) \ 1171__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1172 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1173__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1174 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1175__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1176 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1177__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1178 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1179__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1180 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1181__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1182 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1183__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1184 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1185__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1186 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1187__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1188 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1189__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1190 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1191__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1192 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1193__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1194 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1195__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1196 (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 1197 __altivec_link_error_invalid_argument ()))))))))))))) 1198 1199#define vec_all_lt(a1, a2) \ 1200__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1201 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1202__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1203 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1204__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1205 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1206__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1207 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1208__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1209 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1210__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1211 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1212__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1213 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1214__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1215 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1216__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1217 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1218__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1219 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1220__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1221 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1222__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1223 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1224__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1225 (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 1226 __altivec_link_error_invalid_argument ()))))))))))))) 1227 1228#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (a1) 1229 1230#define vec_all_ne(a1, a2) \ 1231__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1232 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1233__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1234 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1235__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1236 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1237__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1238 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1239__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1240 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1241__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1242 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1243__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1244 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1245__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1246 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1247__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1248 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1249__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1250 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1251__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1252 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1253__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1254 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1255__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1256 (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 1257 __altivec_link_error_invalid_argument ()))))))))))))) 1258 1259#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 1260 1261#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 1262 1263#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 1264 1265#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 1266 1267#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (a1) 1268 1269#define vec_any_eq(a1, a2) \ 1270__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1271 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1272__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1273 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1274__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1275 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1276__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1277 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1278__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1279 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1280__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1281 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1282__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1283 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1284__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1285 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1286__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1287 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1288__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1289 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1290__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1291 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1292__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1293 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1294__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1295 (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 1296 __altivec_link_error_invalid_argument ()))))))))))))) 1297 1298#define vec_any_ge(a1, a2) \ 1299__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1300 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1301__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1302 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1303__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1304 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1305__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1306 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1307__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1308 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1309__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1310 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1311__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1312 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1313__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1314 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1315__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1316 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1317__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1318 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1319__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1320 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1321__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1322 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1323__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1324 (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 1325 __altivec_link_error_invalid_argument ()))))))))))))) 1326 1327#define vec_any_gt(a1, a2) \ 1328__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1329 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1330__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1331 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1332__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1333 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1334__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1335 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1336__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1337 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1338__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1339 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1340__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1341 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1342__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1343 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1344__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1345 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1346__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1347 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1348__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1349 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1350__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1351 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1352__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1353 (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 1354 __altivec_link_error_invalid_argument ()))))))))))))) 1355 1356#define vec_any_le(a1, a2) \ 1357__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1358 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1359__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1360 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1361__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1362 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1363__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1364 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1365__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1366 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1367__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1368 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1369__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1370 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1371__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1372 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1373__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1374 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1375__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1376 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1377__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1378 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1379__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1380 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1381__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1382 (vector signed int) __builtin_altivec_vcmpgefp_p ((vector float) a1, (vector float) a2), \ 1383 __altivec_link_error_invalid_argument ()))))))))))))) 1384 1385#define vec_any_lt(a1, a2) \ 1386__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1387 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1388__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1389 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1390__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1391 (vector signed int) __builtin_altivec_vcmpgtub_p ((vector signed char) a1, (vector signed char) a2), \ 1392__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1393 (vector signed int) __builtin_altivec_vcmpgtsb_p ((vector signed char) a1, (vector signed char) a2), \ 1394__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1395 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1396__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1397 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1398__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1399 (vector signed int) __builtin_altivec_vcmpgtuh_p ((vector signed short) a1, (vector signed short) a2), \ 1400__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1401 (vector signed int) __builtin_altivec_vcmpgtsh_p ((vector signed short) a1, (vector signed short) a2), \ 1402__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1403 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1404__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1405 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1406__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1407 (vector signed int) __builtin_altivec_vcmpgtuw_p ((vector signed int) a1, (vector signed int) a2), \ 1408__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1409 (vector signed int) __builtin_altivec_vcmpgtsw_p ((vector signed int) a1, (vector signed int) a2), \ 1410__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1411 (vector signed int) __builtin_altivec_vcmpgtfp_p ((vector float) a1, (vector float) a2), \ 1412 __altivec_link_error_invalid_argument ()))))))))))))) 1413 1414#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (a1) 1415 1416#define vec_any_ne(a1, a2) \ 1417__ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ 1418 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1419__ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ 1420 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1421__ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ 1422 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1423__ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ 1424 (vector signed int) __builtin_altivec_vcmpequb_p ((vector signed char) a1, (vector signed char) a2), \ 1425__ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ 1426 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1427__ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ 1428 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1429__ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ 1430 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1431__ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ 1432 (vector signed int) __builtin_altivec_vcmpequh_p ((vector signed short) a1, (vector signed short) a2), \ 1433__ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ 1434 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1435__ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ 1436 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1437__ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ 1438 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1439__ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ 1440 (vector signed int) __builtin_altivec_vcmpequw_p ((vector signed int) a1, (vector signed int) a2), \ 1441__ch (__bin_args_eq (vector float, a1, vector float, a2), \ 1442 (vector signed int) __builtin_altivec_vcmpeqfp_p ((vector float) a1, (vector float) a2), \ 1443 __altivec_link_error_invalid_argument ()))))))))))))) 1444 1445#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 1446 1447#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 1448 1449#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (a1, a2) 1450 1451#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (a1, a2) 1452 1453#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (a1) 1454 1455#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (a1, a2) 1456 1457#endif /* __cplusplus */ 1458 1459#endif /* _ALTIVEC_H */ 1460