| /* PowerPC AltiVec include file. |
| Copyright (C) 2002 Free Software Foundation, Inc. |
| Contributed by Aldy Hernandez (aldyh@redhat.com). |
| |
| This file is part of GNU CC. |
| |
| GNU CC is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2, or (at your option) |
| any later version. |
| |
| GNU CC is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GNU CC; see the file COPYING. If not, write to |
| the Free Software Foundation, 59 Temple Place - Suite 330, |
| Boston, MA 02111-1307, USA. */ |
| |
| /* As a special exception, if you include this header file into source |
| files compiled by GCC, this header file does not by itself cause |
| the resulting executable to be covered by the GNU General Public |
| License. This exception does not however invalidate any other |
| reasons why the executable file might be covered by the GNU General |
| Public License. */ |
| |
| /* Implemented to conform to the specification included in the AltiVec |
| Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */ |
| |
| #ifndef _ALTIVEC_H |
| #define _ALTIVEC_H 1 |
| |
| /* Required by Motorola specs. */ |
| #define __VEC__ 10206 |
| |
| #define __ALTIVEC__ 1 |
| |
| #define __vector __attribute__((vector_size(16))) |
| |
| /* You are allowed to undef this for C++ compatability. */ |
| #define vector __vector |
| |
| #define pixel short |
| |
| /* Dummy prototype. */ |
| extern int __altivec_link_error_invalid_argument (); |
| |
| /* Helper macros. */ |
| |
| #define __CR6_EQ 0 |
| #define __CR6_EQ_REV 1 |
| #define __CR6_LT 2 |
| #define __CR6_LT_REV 3 |
| |
| #define __bin_args_eq(xtype, x, ytype, y) \ |
| (__builtin_types_compatible_p (xtype, typeof (x)) \ |
| && __builtin_types_compatible_p (ytype, typeof (y))) |
| |
| #define __un_args_eq(xtype, x) \ |
| __builtin_types_compatible_p (xtype, typeof (x)) |
| |
| #define __tern_args_eq(xtype, x, ytype, y, ztype, z) \ |
| (__builtin_types_compatible_p (xtype, typeof (x)) \ |
| && __builtin_types_compatible_p (ytype, typeof (y)) \ |
| && __builtin_types_compatible_p (ztype, typeof (z))) |
| |
| #define __ch(x, y, z) __builtin_choose_expr (x, y, z) |
| |
| #ifdef __cplusplus |
| |
| /* Prototypes for builtins that take literals and must always be |
| inlined. */ |
| inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline)); |
| inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline)); |
| inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline)); |
| inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline)); |
| inline void vec_dss (const char) __attribute__ ((always_inline)); |
| inline void vec_dst (void *, int, const char) __attribute__ ((always_inline)); |
| inline void vec_dstst (void *, int, const char) __attribute__ ((always_inline)); |
| inline void vec_dststt (void *, int, const char) __attribute__ ((always_inline)); |
| inline void vec_dstt (void *, int, const char) __attribute__ ((always_inline)); |
| inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline)); |
| inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline)); |
| inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline)); |
| inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline)); |
| inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline)); |
| inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline)); |
| inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline)); |
| inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline)); |
| inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline)); |
| inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline)); |
| inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline)); |
| inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline)); |
| inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline)); |
| inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline)); |
| inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline)); |
| inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline)); |
| inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline)); |
| inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline)); |
| inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline)); |
| inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline)); |
| |
| /* vec_abs */ |
| |
| inline vector signed char |
| vec_abs (vector signed char a1) |
| { |
| return __builtin_altivec_abs_v16qi (a1); |
| } |
| |
| inline vector signed short |
| vec_abs (vector signed short a1) |
| { |
| return __builtin_altivec_abs_v8hi (a1); |
| } |
| |
| inline vector signed int |
| vec_abs (vector signed int a1) |
| { |
| return __builtin_altivec_abs_v4si (a1); |
| } |
| |
| inline vector float |
| vec_abs (vector float a1) |
| { |
| return __builtin_altivec_abs_v4sf (a1); |
| } |
| |
| /* vec_abss */ |
| |
| inline vector signed char |
| vec_abss (vector signed char a1) |
| { |
| return __builtin_altivec_abss_v16qi (a1); |
| } |
| |
| inline vector signed short |
| vec_abss (vector signed short a1) |
| { |
| return __builtin_altivec_abss_v8hi (a1); |
| } |
| |
| inline vector signed int |
| vec_abss (vector signed int a1) |
| { |
| return __builtin_altivec_abss_v4si (a1); |
| } |
| |
| /* vec_add */ |
| |
| inline vector signed char |
| vec_add (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_add (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_add (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_add (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_add (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_add (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_add (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_add (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_add (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_add (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_add (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_add (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_add (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_addc */ |
| |
| inline vector unsigned int |
| vec_addc (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_adds */ |
| |
| inline vector unsigned char |
| vec_adds (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_adds (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_adds (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_adds (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned short |
| vec_adds (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_adds (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_adds (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_adds (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned int |
| vec_adds (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_adds (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_adds (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_adds (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_and */ |
| |
| inline vector float |
| vec_and (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_and (vector float a1, vector signed int a2) |
| { |
| return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_and (vector signed int a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_and (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_and (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_and (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_and (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_and (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_and (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_and (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_and (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_and (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_and (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_and (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_and (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_andc */ |
| |
| inline vector float |
| vec_andc (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_andc (vector float a1, vector signed int a2) |
| { |
| return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_andc (vector signed int a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_andc (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_andc (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_andc (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_andc (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_andc (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_andc (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_andc (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_andc (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_andc (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_andc (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_andc (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_andc (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_avg */ |
| |
| inline vector unsigned char |
| vec_avg (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_avg (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned short |
| vec_avg (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_avg (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned int |
| vec_avg (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_avg (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_ceil */ |
| |
| inline vector float |
| vec_ceil (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vrfip ((vector float) a1); |
| } |
| |
| /* vec_cmpb */ |
| |
| inline vector signed int |
| vec_cmpb (vector float a1, vector float a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_cmpeq */ |
| |
| inline vector signed char |
| vec_cmpeq (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_cmpeq (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_cmpeq (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_cmpeq (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_cmpeq (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_cmpeq (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_cmpeq (vector float a1, vector float a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_cmpge */ |
| |
| inline vector signed int |
| vec_cmpge (vector float a1, vector float a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_cmpgt */ |
| |
| inline vector signed char |
| vec_cmpgt (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_cmpgt (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_cmpgt (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_cmpgt (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_cmpgt (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_cmpgt (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_cmpgt (vector float a1, vector float a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_cmple */ |
| |
| inline vector signed int |
| vec_cmple (vector float a1, vector float a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_cmplt */ |
| |
| inline vector signed char |
| vec_cmplt (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_cmplt (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_cmplt (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_cmplt (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_cmplt (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_cmplt (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_cmplt (vector float a1, vector float a2) |
| { |
| return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_ctf */ |
| |
| inline vector float |
| vec_ctf (vector unsigned int a1, const char a2) |
| { |
| return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2); |
| } |
| |
| inline vector float |
| vec_ctf (vector signed int a1, const char a2) |
| { |
| return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2); |
| } |
| |
| /* vec_cts */ |
| |
| inline vector signed int |
| vec_cts (vector float a1, const char a2) |
| { |
| return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2); |
| } |
| |
| /* vec_ctu */ |
| |
| inline vector unsigned int |
| vec_ctu (vector float a1, const char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2); |
| } |
| |
| /* vec_dss */ |
| |
| inline void |
| vec_dss (const char a1) |
| { |
| __builtin_altivec_dss (a1); |
| } |
| |
| /* vec_dssall */ |
| |
| inline void |
| vec_dssall () |
| { |
| __builtin_altivec_dssall (); |
| } |
| |
| /* vec_dst */ |
| |
| inline void |
| vec_dst (void *a1, int a2, const char a3) |
| { |
| __builtin_altivec_dst ((void *) a1, a2, a3); |
| } |
| |
| /* vec_dstst */ |
| |
| inline void |
| vec_dstst (void *a1, int a2, const char a3) |
| { |
| __builtin_altivec_dstst ((void *) a1, a2, a3); |
| } |
| |
| /* vec_dststt */ |
| |
| inline void |
| vec_dststt (void *a1, int a2, const char a3) |
| { |
| __builtin_altivec_dststt ((void *) a1, a2, a3); |
| } |
| |
| /* vec_dstt */ |
| |
| inline void |
| vec_dstt (void *a1, int a2, const char a3) |
| { |
| __builtin_altivec_dstt ((void *) a1, a2, a3); |
| } |
| |
| /* vec_expte */ |
| |
| inline vector float |
| vec_expte (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vexptefp ((vector float) a1); |
| } |
| |
| /* vec_floor */ |
| |
| inline vector float |
| vec_floor (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vrfim ((vector float) a1); |
| } |
| |
| /* vec_ld */ |
| |
| inline vector float |
| vec_ld (int a1, vector float *a2) |
| { |
| return (vector float) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector float |
| vec_ld (int a1, float *a2) |
| { |
| return (vector float) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector signed int |
| vec_ld (int a1, vector signed int *a2) |
| { |
| return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector signed int |
| vec_ld (int a1, signed int *a2) |
| { |
| return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned int |
| vec_ld (int a1, vector unsigned int *a2) |
| { |
| return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned int |
| vec_ld (int a1, unsigned int *a2) |
| { |
| return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector signed short |
| vec_ld (int a1, vector signed short *a2) |
| { |
| return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector signed short |
| vec_ld (int a1, signed short *a2) |
| { |
| return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned short |
| vec_ld (int a1, vector unsigned short *a2) |
| { |
| return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned short |
| vec_ld (int a1, unsigned short *a2) |
| { |
| return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector signed char |
| vec_ld (int a1, vector signed char *a2) |
| { |
| return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector signed char |
| vec_ld (int a1, signed char *a2) |
| { |
| return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_ld (int a1, vector unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_ld (int a1, unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); |
| } |
| |
| /* vec_lde */ |
| |
| inline vector signed char |
| vec_lde (int a1, signed char *a2) |
| { |
| return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lde (int a1, unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); |
| } |
| |
| inline vector signed short |
| vec_lde (int a1, signed short *a2) |
| { |
| return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned short |
| vec_lde (int a1, unsigned short *a2) |
| { |
| return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); |
| } |
| |
| inline vector float |
| vec_lde (int a1, float *a2) |
| { |
| return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); |
| } |
| |
| inline vector signed int |
| vec_lde (int a1, signed int *a2) |
| { |
| return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); |
| } |
| |
| inline vector unsigned int |
| vec_lde (int a1, unsigned int *a2) |
| { |
| return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); |
| } |
| |
| /* vec_ldl */ |
| |
| inline vector float |
| vec_ldl (int a1, vector float *a2) |
| { |
| return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector float |
| vec_ldl (int a1, float *a2) |
| { |
| return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector signed int |
| vec_ldl (int a1, vector signed int *a2) |
| { |
| return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector signed int |
| vec_ldl (int a1, signed int *a2) |
| { |
| return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned int |
| vec_ldl (int a1, vector unsigned int *a2) |
| { |
| return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned int |
| vec_ldl (int a1, unsigned int *a2) |
| { |
| return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector signed short |
| vec_ldl (int a1, vector signed short *a2) |
| { |
| return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector signed short |
| vec_ldl (int a1, signed short *a2) |
| { |
| return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned short |
| vec_ldl (int a1, vector unsigned short *a2) |
| { |
| return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned short |
| vec_ldl (int a1, unsigned short *a2) |
| { |
| return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector signed char |
| vec_ldl (int a1, vector signed char *a2) |
| { |
| return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector signed char |
| vec_ldl (int a1, signed char *a2) |
| { |
| return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_ldl (int a1, vector unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_ldl (int a1, unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); |
| } |
| |
| /* vec_loge */ |
| |
| inline vector float |
| vec_loge (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vlogefp ((vector float) a1); |
| } |
| |
| /* vec_lvsl */ |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, signed char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, unsigned short *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, signed short *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, unsigned int *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, signed int *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsl (int a1, float *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2); |
| } |
| |
| /* vec_lvsr */ |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, unsigned char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, signed char *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, unsigned short *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, signed short *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, unsigned int *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, signed int *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| inline vector unsigned char |
| vec_lvsr (int a1, float *a2) |
| { |
| return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2); |
| } |
| |
| /* vec_madd */ |
| |
| inline vector float |
| vec_madd (vector float a1, vector float a2, vector float a3) |
| { |
| return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3); |
| } |
| |
| /* vec_madds */ |
| |
| inline vector signed short |
| vec_madds (vector signed short a1, vector signed short a2, vector signed short a3) |
| { |
| return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); |
| } |
| |
| /* vec_max */ |
| |
| inline vector unsigned char |
| vec_max (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_max (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_max (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_max (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned short |
| vec_max (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_max (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_max (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_max (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned int |
| vec_max (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_max (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_max (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_max (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_max (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_mergeh */ |
| |
| inline vector signed char |
| vec_mergeh (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_mergeh (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_mergeh (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_mergeh (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector float |
| vec_mergeh (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_mergeh (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_mergeh (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_mergel */ |
| |
| inline vector signed char |
| vec_mergel (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_mergel (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_mergel (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_mergel (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector float |
| vec_mergel (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_mergel (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_mergel (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_mfvscr */ |
| |
| inline vector unsigned short |
| vec_mfvscr () |
| { |
| return (vector unsigned short) __builtin_altivec_mfvscr (); |
| } |
| |
| /* vec_min */ |
| |
| inline vector unsigned char |
| vec_min (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_min (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_min (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_min (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned short |
| vec_min (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_min (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_min (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_min (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned int |
| vec_min (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_min (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_min (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_min (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_min (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_mladd */ |
| |
| inline vector signed short |
| vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3) |
| { |
| return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); |
| } |
| |
| inline vector signed short |
| vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3) |
| { |
| return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); |
| } |
| |
| inline vector signed short |
| vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3) |
| { |
| return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); |
| } |
| |
| inline vector unsigned short |
| vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3) |
| { |
| return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); |
| } |
| |
| /* vec_mradds */ |
| |
| inline vector signed short |
| vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3) |
| { |
| return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3); |
| } |
| |
| /* vec_msum */ |
| |
| inline vector unsigned int |
| vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed int |
| vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3) |
| { |
| return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned int |
| vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed int |
| vec_msum (vector signed short a1, vector signed short a2, vector signed int a3) |
| { |
| return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); |
| } |
| |
| /* vec_msums */ |
| |
| inline vector unsigned int |
| vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed int |
| vec_msums (vector signed short a1, vector signed short a2, vector signed int a3) |
| { |
| return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3); |
| } |
| |
| /* vec_mtvscr */ |
| |
| inline void |
| vec_mtvscr (vector signed int a1) |
| { |
| __builtin_altivec_mtvscr ((vector signed int) a1); |
| } |
| |
| inline void |
| vec_mtvscr (vector unsigned int a1) |
| { |
| __builtin_altivec_mtvscr ((vector signed int) a1); |
| } |
| |
| inline void |
| vec_mtvscr (vector signed short a1) |
| { |
| __builtin_altivec_mtvscr ((vector signed int) a1); |
| } |
| |
| inline void |
| vec_mtvscr (vector unsigned short a1) |
| { |
| __builtin_altivec_mtvscr ((vector signed int) a1); |
| } |
| |
| inline void |
| vec_mtvscr (vector signed char a1) |
| { |
| __builtin_altivec_mtvscr ((vector signed int) a1); |
| } |
| |
| inline void |
| vec_mtvscr (vector unsigned char a1) |
| { |
| __builtin_altivec_mtvscr ((vector signed int) a1); |
| } |
| |
| /* vec_mule */ |
| |
| inline vector unsigned short |
| vec_mule (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_mule (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned int |
| vec_mule (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_mule (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| /* vec_mulo */ |
| |
| inline vector unsigned short |
| vec_mulo (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_mulo (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned int |
| vec_mulo (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_mulo (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| /* vec_nmsub */ |
| |
| inline vector float |
| vec_nmsub (vector float a1, vector float a2, vector float a3) |
| { |
| return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3); |
| } |
| |
| /* vec_nor */ |
| |
| inline vector float |
| vec_nor (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_nor (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_nor (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_nor (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_nor (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_nor (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_nor (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_or */ |
| |
| inline vector float |
| vec_or (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_or (vector float a1, vector signed int a2) |
| { |
| return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_or (vector signed int a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_or (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_or (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_or (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_or (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_or (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_or (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_or (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_or (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_or (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_or (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_or (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_or (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_pack */ |
| |
| inline vector signed char |
| vec_pack (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned char |
| vec_pack (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_pack (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_pack (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_packpx */ |
| |
| inline vector signed short |
| vec_packpx (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector signed short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_packs */ |
| |
| inline vector unsigned char |
| vec_packs (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed char |
| vec_packs (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_packs (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_packs (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_packsu */ |
| |
| inline vector unsigned char |
| vec_packsu (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned char |
| vec_packsu (vector signed short a1, vector signed short a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_packsu (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_packsu (vector signed int a1, vector signed int a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_perm */ |
| |
| inline vector float |
| vec_perm (vector float a1, vector float a2, vector unsigned char a3) |
| { |
| return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| inline vector signed int |
| vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3) |
| { |
| return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| inline vector unsigned int |
| vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| inline vector signed short |
| vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3) |
| { |
| return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| inline vector unsigned short |
| vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3) |
| { |
| return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| inline vector signed char |
| vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3) |
| { |
| return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| inline vector unsigned char |
| vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3) |
| { |
| return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3); |
| } |
| |
| /* vec_re */ |
| |
| inline vector float |
| vec_re (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vrefp ((vector float) a1); |
| } |
| |
| /* vec_rl */ |
| |
| inline vector signed char |
| vec_rl (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_rl (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_rl (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_rl (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_rl (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_rl (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_round */ |
| |
| inline vector float |
| vec_round (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vrfin ((vector float) a1); |
| } |
| |
| /* vec_rsqrte */ |
| |
| inline vector float |
| vec_rsqrte (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1); |
| } |
| |
| /* vec_sel */ |
| |
| inline vector float |
| vec_sel (vector float a1, vector float a2, vector signed int a3) |
| { |
| return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector float |
| vec_sel (vector float a1, vector float a2, vector unsigned int a3) |
| { |
| return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed int |
| vec_sel (vector signed int a1, vector signed int a2, vector signed int a3) |
| { |
| return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed int |
| vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3) |
| { |
| return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned int |
| vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned int |
| vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed short |
| vec_sel (vector signed short a1, vector signed short a2, vector signed short a3) |
| { |
| return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed short |
| vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3) |
| { |
| return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned short |
| vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3) |
| { |
| return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned short |
| vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3) |
| { |
| return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed char |
| vec_sel (vector signed char a1, vector signed char a2, vector signed char a3) |
| { |
| return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector signed char |
| vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3) |
| { |
| return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned char |
| vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3) |
| { |
| return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| inline vector unsigned char |
| vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3) |
| { |
| return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3); |
| } |
| |
| /* vec_sl */ |
| |
| inline vector signed char |
| vec_sl (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sl (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_sl (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sl (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_sl (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sl (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_sld */ |
| |
| inline vector float |
| vec_sld (vector float a1, vector float a2, const char a3) |
| { |
| return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| inline vector signed int |
| vec_sld (vector signed int a1, vector signed int a2, const char a3) |
| { |
| return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| inline vector unsigned int |
| vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3) |
| { |
| return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| inline vector signed short |
| vec_sld (vector signed short a1, vector signed short a2, const char a3) |
| { |
| return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| inline vector unsigned short |
| vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3) |
| { |
| return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| inline vector signed char |
| vec_sld (vector signed char a1, vector signed char a2, const char a3) |
| { |
| return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| inline vector unsigned char |
| vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3) |
| { |
| return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3); |
| } |
| |
| /* vec_sll */ |
| |
| inline vector signed int |
| vec_sll (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_sll (vector signed int a1, vector unsigned short a2) |
| { |
| return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_sll (vector signed int a1, vector unsigned char a2) |
| { |
| return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sll (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sll (vector unsigned int a1, vector unsigned short a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sll (vector unsigned int a1, vector unsigned char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_sll (vector signed short a1, vector unsigned int a2) |
| { |
| return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_sll (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_sll (vector signed short a1, vector unsigned char a2) |
| { |
| return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sll (vector unsigned short a1, vector unsigned int a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sll (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sll (vector unsigned short a1, vector unsigned char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_sll (vector signed char a1, vector unsigned int a2) |
| { |
| return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_sll (vector signed char a1, vector unsigned short a2) |
| { |
| return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_sll (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sll (vector unsigned char a1, vector unsigned int a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sll (vector unsigned char a1, vector unsigned short a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sll (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_slo */ |
| |
| inline vector float |
| vec_slo (vector float a1, vector signed char a2) |
| { |
| return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_slo (vector float a1, vector unsigned char a2) |
| { |
| return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_slo (vector signed int a1, vector signed char a2) |
| { |
| return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_slo (vector signed int a1, vector unsigned char a2) |
| { |
| return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_slo (vector unsigned int a1, vector signed char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_slo (vector unsigned int a1, vector unsigned char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_slo (vector signed short a1, vector signed char a2) |
| { |
| return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_slo (vector signed short a1, vector unsigned char a2) |
| { |
| return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_slo (vector unsigned short a1, vector signed char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_slo (vector unsigned short a1, vector unsigned char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_slo (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_slo (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_slo (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_slo (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_splat */ |
| |
| inline vector signed char |
| vec_splat (vector signed char a1, const char a2) |
| { |
| return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2); |
| } |
| |
| inline vector unsigned char |
| vec_splat (vector unsigned char a1, const char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2); |
| } |
| |
| inline vector signed short |
| vec_splat (vector signed short a1, const char a2) |
| { |
| return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2); |
| } |
| |
| inline vector unsigned short |
| vec_splat (vector unsigned short a1, const char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); |
| } |
| |
| inline vector float |
| vec_splat (vector float a1, const char a2) |
| { |
| return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2); |
| } |
| |
| inline vector signed int |
| vec_splat (vector signed int a1, const char a2) |
| { |
| return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2); |
| } |
| |
| inline vector unsigned int |
| vec_splat (vector unsigned int a1, const char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2); |
| } |
| |
| /* vec_splat_s8 */ |
| |
| inline vector signed char |
| vec_splat_s8 (const char a1) |
| { |
| return (vector signed char) __builtin_altivec_vspltisb (a1); |
| } |
| |
| /* vec_splat_s16 */ |
| |
| inline vector signed short |
| vec_splat_s16 (const char a1) |
| { |
| return (vector signed short) __builtin_altivec_vspltish (a1); |
| } |
| |
| /* vec_splat_s32 */ |
| |
| inline vector signed int |
| vec_splat_s32 (const char a1) |
| { |
| return (vector signed int) __builtin_altivec_vspltisw (a1); |
| } |
| |
| /* vec_splat_u8 */ |
| |
| inline vector unsigned char |
| vec_splat_u8 (const char a1) |
| { |
| return (vector unsigned char) __builtin_altivec_vspltisb (a1); |
| } |
| |
| /* vec_splat_u16 */ |
| |
| inline vector unsigned short |
| vec_splat_u16 (const char a1) |
| { |
| return (vector unsigned short) __builtin_altivec_vspltish (a1); |
| } |
| |
| /* vec_splat_u32 */ |
| |
| inline vector unsigned int |
| vec_splat_u32 (const char a1) |
| { |
| return (vector unsigned int) __builtin_altivec_vspltisw (a1); |
| } |
| |
| /* vec_sr */ |
| |
| inline vector signed char |
| vec_sr (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sr (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_sr (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sr (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_sr (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sr (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_sra */ |
| |
| inline vector signed char |
| vec_sra (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sra (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_sra (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sra (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_sra (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sra (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_srl */ |
| |
| inline vector signed int |
| vec_srl (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_srl (vector signed int a1, vector unsigned short a2) |
| { |
| return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_srl (vector signed int a1, vector unsigned char a2) |
| { |
| return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_srl (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_srl (vector unsigned int a1, vector unsigned short a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_srl (vector unsigned int a1, vector unsigned char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_srl (vector signed short a1, vector unsigned int a2) |
| { |
| return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_srl (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_srl (vector signed short a1, vector unsigned char a2) |
| { |
| return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_srl (vector unsigned short a1, vector unsigned int a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_srl (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_srl (vector unsigned short a1, vector unsigned char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_srl (vector signed char a1, vector unsigned int a2) |
| { |
| return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_srl (vector signed char a1, vector unsigned short a2) |
| { |
| return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_srl (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_srl (vector unsigned char a1, vector unsigned int a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_srl (vector unsigned char a1, vector unsigned short a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_srl (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_sro */ |
| |
| inline vector float |
| vec_sro (vector float a1, vector signed char a2) |
| { |
| return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_sro (vector float a1, vector unsigned char a2) |
| { |
| return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_sro (vector signed int a1, vector signed char a2) |
| { |
| return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_sro (vector signed int a1, vector unsigned char a2) |
| { |
| return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sro (vector unsigned int a1, vector signed char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sro (vector unsigned int a1, vector unsigned char a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_sro (vector signed short a1, vector signed char a2) |
| { |
| return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_sro (vector signed short a1, vector unsigned char a2) |
| { |
| return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sro (vector unsigned short a1, vector signed char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sro (vector unsigned short a1, vector unsigned char a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_sro (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_sro (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sro (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sro (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_st */ |
| |
| inline void |
| vec_st (vector float a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_st (vector signed int a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_st (vector unsigned int a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_st (vector signed short a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_st (vector unsigned short a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_st (vector signed char a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_st (vector unsigned char a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| /* vec_ste */ |
| |
| inline void |
| vec_ste (vector signed char a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_ste (vector unsigned char a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_ste (vector signed short a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_ste (vector unsigned short a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_ste (vector float a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_ste (vector signed int a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_ste (vector unsigned int a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| /* vec_stl */ |
| |
| inline void |
| vec_stl (vector float a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_stl (vector signed int a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_stl (vector unsigned int a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_stl (vector signed short a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_stl (vector unsigned short a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_stl (vector signed char a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| inline void |
| vec_stl (vector unsigned char a1, int a2, void *a3) |
| { |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); |
| } |
| |
| /* vec_sub */ |
| |
| inline vector signed char |
| vec_sub (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sub (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sub (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_sub (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed short |
| vec_sub (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sub (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sub (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_sub (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed int |
| vec_sub (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sub (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sub (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_sub (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_sub (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2); |
| } |
| |
| /* vec_subc */ |
| |
| inline vector unsigned int |
| vec_subc (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_subs */ |
| |
| inline vector unsigned char |
| vec_subs (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_subs (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned char |
| vec_subs (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector signed char |
| vec_subs (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline vector unsigned short |
| vec_subs (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_subs (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned short |
| vec_subs (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector signed short |
| vec_subs (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline vector unsigned int |
| vec_subs (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_subs (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_subs (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_subs (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_sum4s */ |
| |
| inline vector unsigned int |
| vec_sum4s (vector unsigned char a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_sum4s (vector signed char a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_sum4s (vector signed short a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2); |
| } |
| |
| /* vec_sum2s */ |
| |
| inline vector signed int |
| vec_sum2s (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_sums */ |
| |
| inline vector signed int |
| vec_sums (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_trunc */ |
| |
| inline vector float |
| vec_trunc (vector float a1) |
| { |
| return (vector float) __builtin_altivec_vrfiz ((vector float) a1); |
| } |
| |
| /* vec_unpackh */ |
| |
| inline vector signed short |
| vec_unpackh (vector signed char a1) |
| { |
| return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); |
| } |
| |
| inline vector signed int |
| vec_unpackh (vector signed short a1) |
| { |
| return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); |
| } |
| |
| /* vec_unpackl */ |
| |
| inline vector signed short |
| vec_unpackl (vector signed char a1) |
| { |
| return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); |
| } |
| |
| inline vector signed int |
| vec_unpackl (vector signed short a1) |
| { |
| return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); |
| } |
| |
| /* vec_xor */ |
| |
| inline vector float |
| vec_xor (vector float a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_xor (vector float a1, vector signed int a2) |
| { |
| return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector float |
| vec_xor (vector signed int a1, vector float a2) |
| { |
| return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed int |
| vec_xor (vector signed int a1, vector signed int a2) |
| { |
| return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_xor (vector signed int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_xor (vector unsigned int a1, vector signed int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned int |
| vec_xor (vector unsigned int a1, vector unsigned int a2) |
| { |
| return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed short |
| vec_xor (vector signed short a1, vector signed short a2) |
| { |
| return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_xor (vector signed short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_xor (vector unsigned short a1, vector signed short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned short |
| vec_xor (vector unsigned short a1, vector unsigned short a2) |
| { |
| return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector signed char |
| vec_xor (vector signed char a1, vector signed char a2) |
| { |
| return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_xor (vector signed char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_xor (vector unsigned char a1, vector signed char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline vector unsigned char |
| vec_xor (vector unsigned char a1, vector unsigned char a2) |
| { |
| return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2); |
| } |
| |
| /* vec_all_eq */ |
| |
| inline int |
| vec_all_eq (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2); |
| } |
| |
| inline int |
| vec_all_eq (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_eq (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2); |
| } |
| |
| /* vec_all_ge */ |
| |
| inline int |
| vec_all_ge (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_ge (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); |
| } |
| |
| /* vec_all_gt */ |
| |
| inline int |
| vec_all_gt (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_gt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2); |
| } |
| |
| /* vec_all_in */ |
| |
| inline int |
| vec_all_in (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2); |
| } |
| |
| /* vec_all_le */ |
| |
| inline int |
| vec_all_le (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_le (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_le (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_le (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_le (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_le (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_le (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_le (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_le (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_le (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_le (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_le (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_le (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1); |
| } |
| |
| /* vec_all_lt */ |
| |
| inline int |
| vec_all_lt (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_all_lt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1); |
| } |
| |
| /* vec_all_nan */ |
| |
| inline int |
| vec_all_nan (vector float a1) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); |
| } |
| |
| /* vec_all_ne */ |
| |
| inline int |
| vec_all_ne (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_all_ne (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2); |
| } |
| |
| /* vec_all_nge */ |
| |
| inline int |
| vec_all_nge (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2); |
| } |
| |
| /* vec_all_ngt */ |
| |
| inline int |
| vec_all_ngt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2); |
| } |
| |
| /* vec_all_nle */ |
| |
| inline int |
| vec_all_nle (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1); |
| } |
| |
| /* vec_all_nlt */ |
| |
| inline int |
| vec_all_nlt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1); |
| } |
| |
| /* vec_all_numeric */ |
| |
| inline int |
| vec_all_numeric (vector float a1) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1); |
| } |
| |
| /* vec_any_eq */ |
| |
| inline int |
| vec_any_eq (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_eq (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2); |
| } |
| |
| /* vec_any_ge */ |
| |
| inline int |
| vec_any_ge (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_ge (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2); |
| } |
| |
| /* vec_any_gt */ |
| |
| inline int |
| vec_any_gt (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_gt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2); |
| } |
| |
| /* vec_any_le */ |
| |
| inline int |
| vec_any_le (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_le (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_le (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_le (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_le (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_le (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_le (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_le (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_le (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_le (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_le (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_le (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_le (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); |
| } |
| |
| /* vec_any_lt */ |
| |
| inline int |
| vec_any_lt (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1); |
| } |
| |
| inline int |
| vec_any_lt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1); |
| } |
| |
| /* vec_any_nan */ |
| |
| inline int |
| vec_any_nan (vector float a1) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1); |
| } |
| |
| /* vec_any_ne */ |
| |
| inline int |
| vec_any_ne (vector signed char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector signed char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector unsigned char a1, vector signed char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector unsigned char a1, vector unsigned char a2) |
| { |
| return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector signed short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector signed short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector unsigned short a1, vector signed short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector unsigned short a1, vector unsigned short a2) |
| { |
| return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector signed int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector signed int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector unsigned int a1, vector signed int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector unsigned int a1, vector unsigned int a2) |
| { |
| return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2); |
| } |
| |
| inline int |
| vec_any_ne (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2); |
| } |
| |
| /* vec_any_nge */ |
| |
| inline int |
| vec_any_nge (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2); |
| } |
| |
| /* vec_any_ngt */ |
| |
| inline int |
| vec_any_ngt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2); |
| } |
| |
| /* vec_any_nle */ |
| |
| inline int |
| vec_any_nle (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1); |
| } |
| |
| /* vec_any_nlt */ |
| |
| inline int |
| vec_any_nlt (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1); |
| } |
| |
| /* vec_any_numeric */ |
| |
| inline int |
| vec_any_numeric (vector float a1) |
| { |
| return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1); |
| } |
| |
| /* vec_any_out */ |
| |
| inline int |
| vec_any_out (vector float a1, vector float a2) |
| { |
| return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2); |
| } |
| |
| /* vec_step */ |
| |
| template<typename _Tp> |
| struct __vec_step_help |
| { |
| // All proper vector types will specialize _S_elem. |
| }; |
| |
| template<> |
| struct __vec_step_help<vector signed short> |
| { |
| static const int _S_elem = 8; |
| }; |
| |
| template<> |
| struct __vec_step_help<vector unsigned short> |
| { |
| static const int _S_elem = 8; |
| }; |
| |
| template<> |
| struct __vec_step_help<vector signed int> |
| { |
| static const int _S_elem = 4; |
| }; |
| |
| template<> |
| struct __vec_step_help<vector unsigned int> |
| { |
| static const int _S_elem = 4; |
| }; |
| |
| template<> |
| struct __vec_step_help<vector unsigned char> |
| { |
| static const int _S_elem = 16; |
| }; |
| |
| template<> |
| struct __vec_step_help<vector signed char> |
| { |
| static const int _S_elem = 16; |
| }; |
| |
| template<> |
| struct __vec_step_help<vector float> |
| { |
| static const int _S_elem = 4; |
| }; |
| |
| #define vec_step(t) __vec_step_help<t>::_S_elem |
| |
| #else /* not C++ */ |
| |
| /* "... and so I think no man in a century will suffer as greatly as |
| you will." */ |
| |
| #define vec_abs(a) \ |
| __ch (__un_args_eq (vector signed char, a), \ |
| ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) a)), \ |
| __ch (__un_args_eq (vector signed short, a), \ |
| ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) a)), \ |
| __ch (__un_args_eq (vector signed int, a), \ |
| ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) a)), \ |
| __ch (__un_args_eq (vector float, a), \ |
| ((vector float) __builtin_altivec_abs_v4sf ((vector float) a)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_abss(a) \ |
| __ch (__un_args_eq (vector signed char, a), \ |
| ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) a)), \ |
| __ch (__un_args_eq (vector signed short, a), \ |
| ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) a)), \ |
| __ch (__un_args_eq (vector signed int, a), \ |
| ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) a)), \ |
| __altivec_link_error_invalid_argument ()))) |
| |
| #define vec_step(t) \ |
| __ch (__builtin_types_compatible_p (t, vector signed int), 4, \ |
| __ch (__builtin_types_compatible_p (t, vector unsigned int), 4, \ |
| __ch (__builtin_types_compatible_p (t, vector signed short), 8, \ |
| __ch (__builtin_types_compatible_p (t, vector unsigned short), 8, \ |
| __ch (__builtin_types_compatible_p (t, vector signed char), 16, \ |
| __ch (__builtin_types_compatible_p (t, vector unsigned char), 16, \ |
| __ch (__builtin_types_compatible_p (t, vector float), 4, \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_add(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_addc(a1, a2) ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2)) |
| |
| #define vec_adds(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))))))))) |
| |
| #define vec_and(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ |
| ((vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))))) |
| |
| #define vec_andc(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ |
| ((vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))))) |
| |
| #define vec_avg(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_ceil(a1) __builtin_altivec_vrfip (a1) |
| |
| #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp (a1, a2) |
| |
| #define vec_cmpeq(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_cmpge(a1, a2) __builtin_altivec_vcmpgefp (a1, a2) |
| |
| #define vec_cmpgt(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp (a1, a2) |
| |
| #define vec_cmplt(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_ctf(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned int, a1, int, a2), \ |
| ((vector float) __builtin_altivec_vcfux ((vector signed int) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, int, a2), \ |
| ((vector float) __builtin_altivec_vcfsx ((vector signed int) a1, (const char) a2)), \ |
| __altivec_link_error_invalid_argument ())) |
| |
| #define vec_cts(a1, a2) __builtin_altivec_vctsxs (a1, a2) |
| |
| #define vec_ctu(a1, a2) __builtin_altivec_vctuxs (a1, a2) |
| |
| #define vec_dss(a1) __builtin_altivec_dss (a1) |
| |
| #define vec_dssall() __builtin_altivec_dssall () |
| |
| #define vec_dst(a1, a2, a3) __builtin_altivec_dst (a1, a2, a3) |
| |
| #define vec_dstst(a1, a2, a3) __builtin_altivec_dstst (a1, a2, a3) |
| |
| #define vec_dststt(a1, a2, a3) __builtin_altivec_dststt (a1, a2, a3) |
| |
| #define vec_dstt(a1, a2, a3) __builtin_altivec_dstt (a1, a2, a3) |
| |
| #define vec_expte(a1) __builtin_altivec_vexptefp (a1) |
| |
| #define vec_floor(a1) __builtin_altivec_vrfim (a1) |
| |
| #define vec_ld(a, b) \ |
| __ch (__un_args_eq (vector unsigned char *, b), \ |
| ((vector unsigned char) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (unsigned char *, b), \ |
| ((vector unsigned char) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (vector signed char *, b), \ |
| ((vector signed char) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (signed char *, b), \ |
| ((vector signed char) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (vector unsigned short *, b), \ |
| ((vector unsigned short) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (unsigned short *, b), \ |
| ((vector unsigned short) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (vector signed short *, b), \ |
| ((vector signed short) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (signed short *, b), \ |
| ((vector signed short) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (vector unsigned int *, b), \ |
| ((vector unsigned int) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (unsigned int *, b), \ |
| ((vector unsigned int) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (vector signed int *, b), \ |
| ((vector signed int) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (signed int *, b), \ |
| ((vector signed int) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (vector float *, b), \ |
| ((vector float) __builtin_altivec_lvx (a, b)), \ |
| __ch (__un_args_eq (float *, b), \ |
| ((vector float) __builtin_altivec_lvx (a, b)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))) |
| |
| #define vec_lde(a, b) \ |
| __ch (__un_args_eq (unsigned char *, b), \ |
| ((vector unsigned char) __builtin_altivec_lvebx (a, b)), \ |
| __ch (__un_args_eq (signed char *, b), \ |
| ((vector signed char) __builtin_altivec_lvebx (a, b)), \ |
| __ch (__un_args_eq (unsigned short *, b), \ |
| ((vector unsigned short) __builtin_altivec_lvehx (a, b)), \ |
| __ch (__un_args_eq (signed short *, b), \ |
| ((vector signed short) __builtin_altivec_lvehx (a, b)), \ |
| __ch (__un_args_eq (unsigned int *, b), \ |
| ((vector unsigned int) __builtin_altivec_lvewx (a, b)), \ |
| __ch (__un_args_eq (signed int *, b), \ |
| ((vector signed int) __builtin_altivec_lvewx (a, b)), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_ldl(a, b) \ |
| __ch (__un_args_eq (vector unsigned char *, b), \ |
| ((vector unsigned char) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (unsigned char *, b), \ |
| ((vector unsigned char) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (vector signed char *, b), \ |
| ((vector signed char) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (signed char *, b), \ |
| ((vector signed char) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (vector unsigned short *, b), \ |
| ((vector unsigned short) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (unsigned short *, b), \ |
| ((vector unsigned short) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (vector signed short *, b), \ |
| ((vector signed short) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (signed short *, b), \ |
| ((vector signed short) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (vector unsigned int *, b), \ |
| ((vector unsigned int) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (unsigned int *, b), \ |
| ((vector unsigned int) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (vector signed int *, b), \ |
| ((vector signed int) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (signed int *, b), \ |
| ((vector signed int) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (vector float *, b), \ |
| ((vector float) __builtin_altivec_lvxl (a, b)), \ |
| __ch (__un_args_eq (float *, b), \ |
| ((vector float) __builtin_altivec_lvxl (a, b)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))) |
| |
| #define vec_loge(a1) __builtin_altivec_vlogefp (a1) |
| |
| #define vec_lvsl(a1, a2) ((vector unsigned char) __builtin_altivec_lvsl (a1, a2)) |
| |
| #define vec_lvsr(a1, a2) ((vector unsigned char) __builtin_altivec_lvsr (a1, a2)) |
| |
| #define vec_madd(a1, a2, a3) __builtin_altivec_vmaddfp (a1, a2, a3) |
| |
| #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs (a1, a2, a3) |
| |
| #define vec_max(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_mergeh(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_mergel(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_mfvscr ((vector unsigned short) __builtin_altivec_mfvscr ()) |
| |
| #define vec_min(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_mladd(a1, a2, a3) \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed short, a3), \ |
| ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector unsigned short, a2, vector unsigned short, a3), \ |
| ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector signed short, a2, vector signed short, a3), \ |
| ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned short, a3), \ |
| ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs (a1, a2, a3) |
| |
| #define vec_msum(a1, a2, a3) \ |
| __ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned int, a3), \ |
| ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed char, a1, vector unsigned char, a2, vector signed int, a3), \ |
| ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned int, a3), \ |
| ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed int, a3), \ |
| ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_msums(a1, a2, a3) \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned int, a3), \ |
| ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed int, a3), \ |
| ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3)), \ |
| __altivec_link_error_invalid_argument ())) |
| |
| #define vec_mtvscr(a1) \ |
| __ch (__un_args_eq (vector signed int, a1), \ |
| __builtin_altivec_mtvscr ((vector signed int) a1), \ |
| __ch (__un_args_eq (vector unsigned int, a1), \ |
| __builtin_altivec_mtvscr ((vector signed int) a1), \ |
| __ch (__un_args_eq (vector signed short, a1), \ |
| __builtin_altivec_mtvscr ((vector signed int) a1), \ |
| __ch (__un_args_eq (vector unsigned short, a1), \ |
| __builtin_altivec_mtvscr ((vector signed int) a1), \ |
| __ch (__un_args_eq (vector signed char, a1), \ |
| __builtin_altivec_mtvscr ((vector signed int) a1), \ |
| __ch (__un_args_eq (vector unsigned char, a1), \ |
| __builtin_altivec_mtvscr ((vector signed int) a1), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_mule(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_mulo(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_nmsub(a1, a2, a3) __builtin_altivec_vnmsubfp (a1, a2, a3) |
| |
| #define vec_nor(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_or(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ |
| ((vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))))) |
| |
| #define vec_pack(a1, a2) \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_packpx(a1, a2) __builtin_altivec_vpkpx (a1, a2) |
| |
| #define vec_packs(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_packsu(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))) |
| |
| #define vec_perm(a1, a2, a3) \ |
| __ch (__tern_args_eq (vector float, a1, vector float, a2, vector unsigned char, a3), \ |
| ((vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector unsigned char, a3), \ |
| ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector unsigned char, a3), \ |
| ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector unsigned char, a3), \ |
| ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned char, a3), \ |
| ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector unsigned char, a3), \ |
| ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned char, a3), \ |
| ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_re(a1) __builtin_altivec_vrefp (a1) |
| |
| #define vec_rl(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_round(a1) __builtin_altivec_vrfin (a1) |
| |
| #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp (a1) |
| |
| #define vec_sel(a1, a2, a3) \ |
| __ch (__tern_args_eq (vector float, a1, vector float, a2, vector signed int, a3), \ |
| ((vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector float, a1, vector float, a2, vector unsigned int, a3), \ |
| ((vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector signed int, a3), \ |
| ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, vector unsigned int, a3), \ |
| ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector signed int, a3), \ |
| ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, vector unsigned int, a3), \ |
| ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector signed short, a3), \ |
| ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, vector unsigned short, a3), \ |
| ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector signed short, a3), \ |
| ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, vector unsigned short, a3), \ |
| ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector signed char, a3), \ |
| ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, vector unsigned char, a3), \ |
| ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector signed char, a3), \ |
| ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, vector unsigned char, a3), \ |
| ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))) |
| |
| #define vec_sl(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_sld(a1, a2, a3) \ |
| __ch (__tern_args_eq (vector float, a1, vector float, a2, int, a3), \ |
| ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __ch (__tern_args_eq (vector signed int, a1, vector signed int, a2, int, a3), \ |
| ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __ch (__tern_args_eq (vector unsigned int, a1, vector unsigned int, a2, int, a3), \ |
| ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __ch (__tern_args_eq (vector signed short, a1, vector signed short, a2, int, a3), \ |
| ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __ch (__tern_args_eq (vector unsigned short, a1, vector unsigned short, a2, int, a3), \ |
| ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __ch (__tern_args_eq (vector signed char, a1, vector signed char, a2, int, a3), \ |
| ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __ch (__tern_args_eq (vector unsigned char, a1, vector unsigned char, a2, int, a3), \ |
| ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, (const char) a3)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_sll(a1, a2) \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned short, a2), \ |
| ((vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ |
| ((vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned short, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned int, a2), \ |
| ((vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ |
| ((vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned int, a2), \ |
| ((vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned short, a2), \ |
| ((vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned short, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))))))) |
| |
| #define vec_slo(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector signed char, a2), \ |
| ((vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector unsigned char, a2), \ |
| ((vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed char, a2), \ |
| ((vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ |
| ((vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed char, a2), \ |
| ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ |
| ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed char, a2), \ |
| ((vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ |
| ((vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))) |
| |
| #define vec_splat(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, int, a2), \ |
| ((vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, int, a2), \ |
| ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, int, a2), \ |
| ((vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, int, a2), \ |
| ((vector float) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, int, a2), \ |
| ((vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, (const char) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_splat_s8(a1) __builtin_altivec_vspltisb (a1) |
| |
| #define vec_splat_s16(a1) __builtin_altivec_vspltish (a1) |
| |
| #define vec_splat_s32(a1) __builtin_altivec_vspltisw (a1) |
| |
| #define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb (a1)) |
| |
| #define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish (a1)) |
| |
| #define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw (a1)) |
| |
| #define vec_sr(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_sra(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))) |
| |
| #define vec_srl(a1, a2) \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned short, a2), \ |
| ((vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ |
| ((vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned short, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned int, a2), \ |
| ((vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ |
| ((vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned int, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned int, a2), \ |
| ((vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned short, a2), \ |
| ((vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned short, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))))))) |
| |
| #define vec_sro(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector signed char, a2), \ |
| ((vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector unsigned char, a2), \ |
| ((vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed char, a2), \ |
| ((vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned char, a2), \ |
| ((vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed char, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned char, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed char, a2), \ |
| ((vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned char, a2), \ |
| ((vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned char, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))))))))))) |
| |
| #define vec_st(a1, a2, a3) \ |
| __builtin_altivec_stvx ((vector signed int) a1, a2, a3) |
| |
| #define vec_stl(a1, a2, a3) \ |
| __builtin_altivec_stvxl ((vector signed int) a1, a2, a3) |
| |
| #define vec_ste(a, b, c) \ |
| __ch (__un_args_eq (vector unsigned char, a), \ |
| __builtin_altivec_stvebx ((vector signed char) a, b, c), \ |
| __ch (__un_args_eq (vector signed char, a), \ |
| __builtin_altivec_stvebx ((vector signed char) a, b, c), \ |
| __ch (__un_args_eq (vector unsigned short, a), \ |
| __builtin_altivec_stvehx ((vector signed short) a, b, c), \ |
| __ch (__un_args_eq (vector signed short, a), \ |
| __builtin_altivec_stvehx ((vector signed short) a, b, c), \ |
| __ch (__un_args_eq (vector unsigned int, a), \ |
| __builtin_altivec_stvewx ((vector signed int) a, b, c), \ |
| __ch (__un_args_eq (vector signed int, a), \ |
| __builtin_altivec_stvewx ((vector signed int) a, b, c), \ |
| __ch (__un_args_eq (vector float, a), \ |
| __builtin_altivec_stvewx ((vector signed int) a, b, c), \ |
| __altivec_link_error_invalid_argument ()))))))) |
| |
| #define vec_sub(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_subc(a1, a2) ((vector unsigned int) __builtin_altivec_vsubcuw ((vector unsigned int) a1, (vector unsigned int) a2)) |
| |
| #define vec_subs(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ())))))))))))) |
| |
| #define vec_sum4s(a1, a2) \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))) |
| |
| #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws (a1, a2) |
| |
| #define vec_sums(a1, a2) __builtin_altivec_vsumsws (a1, a2) |
| |
| #define vec_trunc(a1) __builtin_altivec_vrfiz (a1) |
| |
| #define vec_unpackh(a1) \ |
| __ch (__un_args_eq (vector signed char, a1), \ |
| ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1)), \ |
| __ch (__un_args_eq (vector signed short, a1), \ |
| ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1)), \ |
| __ch (__un_args_eq (vector signed short, a1), \ |
| ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1)), \ |
| __altivec_link_error_invalid_argument ()))) |
| |
| #define vec_unpackl(a1) \ |
| __ch (__un_args_eq (vector signed char, a1), \ |
| ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1)), \ |
| __ch (__un_args_eq (vector signed short, a1), \ |
| ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1)), \ |
| __ch (__un_args_eq (vector signed short, a1), \ |
| ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1)), \ |
| __altivec_link_error_invalid_argument ()))) |
| |
| #define vec_xor(a1, a2) \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector float, a1, vector signed int, a2), \ |
| ((vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector float, a2), \ |
| ((vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| ((vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| ((vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| ((vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2)), \ |
| __altivec_link_error_invalid_argument ()))))))))))))))) |
| |
| /* Predicates. */ |
| |
| #define vec_all_eq(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_all_ge(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgefp_p (__CR6_EQ, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_all_gt(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2) |
| |
| #define vec_all_le(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) a2, (vector float) a1), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_all_lt(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) a2, (vector float) a1), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1) |
| |
| #define vec_all_ne(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2) |
| |
| #define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2) |
| |
| #define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1) |
| |
| #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1) |
| |
| #define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1) |
| |
| #define vec_any_eq(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_any_ge(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_any_gt(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_any_le(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) a2, (vector float) a1), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_any_lt(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) a2, (vector float) a1), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1) |
| |
| #define vec_any_ne(a1, a2) \ |
| __ch (__bin_args_eq (vector signed char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector signed char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector unsigned char, a1, vector unsigned char, a2), \ |
| __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector signed short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector unsigned short, a1, vector unsigned short, a2), \ |
| __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector signed int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector signed int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector unsigned int, a1, vector unsigned int, a2), \ |
| __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2), \ |
| __ch (__bin_args_eq (vector float, a1, vector float, a2), \ |
| __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) a1, (vector float) a2), \ |
| __altivec_link_error_invalid_argument ()))))))))))))) |
| |
| #define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2) |
| |
| #define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2) |
| |
| #define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1) |
| |
| #define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1) |
| |
| #define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1) |
| |
| #define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2) |
| |
| #endif /* __cplusplus */ |
| |
| #endif /* _ALTIVEC_H */ |