aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog46
-rw-r--r--gcc/config/darwin.h13
-rw-r--r--gcc/config/i386/darwin.h4
-rw-r--r--gcc/config/rs6000/altivec.h4922
-rw-r--r--gcc/config/rs6000/darwin.h7
-rw-r--r--gcc/config/rs6000/rs6000-c.c10
-rw-r--r--gcc/config/rs6000/rs6000.c214
-rw-r--r--gcc/config/rs6000/rs6000.h12
-rw-r--r--gcc/testsuite/ChangeLog18
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-1.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-2.C25
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec_check.h23
-rw-r--r--gcc/testsuite/gcc.dg/altivec-1.c5
-rw-r--r--gcc/testsuite/gcc.dg/altivec-10.c13
-rw-r--r--gcc/testsuite/gcc.dg/altivec-12.c94
-rw-r--r--gcc/testsuite/gcc.dg/altivec-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/altivec-3.c6
-rw-r--r--gcc/testsuite/gcc.dg/altivec-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/altivec-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/altivec-6.c64
-rw-r--r--gcc/testsuite/gcc.dg/altivec-7.c24
-rw-r--r--gcc/testsuite/gcc.dg/altivec-8.c2
-rw-r--r--gcc/testsuite/gcc.dg/altivec-9.c2
-rw-r--r--gcc/testsuite/gcc.dg/altivec-varargs-1.c17
-rw-r--r--gcc/testsuite/gcc.dg/altivec_check.h23
-rw-r--r--libf2c/libI77/config.h.in2
-rw-r--r--libf2c/libU77/config.hin2
27 files changed, 4261 insertions, 1295 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ee97682..d3fc0db 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,49 @@
+2004-02-21 Ziemowit Laski <zlaski@apple.com>
+
+ * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Refer to
+ SUBTARGET_OPTION_TRANSLATE_TABLE for architecture-specific options.
+ * config/i386/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): Define it.
+ * config/rs6000/altivec.h: #error out if '-maltivec' not specified.
+ (vector, pixel, bool): #define to __vector, __pixel and __bool.
+ (__un_args_eq, __bin_args_eq, __tern_args_eq): Move to C-specific
+ portion of header.
+ (__altivec_link_error_invalid_argument): Remove prototype; will use
+ __builtin_altivec_compiletime_error("vec_*") instead.
+ (vec_*): Fix/complete set of available operation overloads given the
+ existence of distinct 'vector bool ...' and 'vector pixel' types; tighten
+ cv-correctness of pointer arguments; in C, always check for correct
+ argument types before macro expansion.
+ * config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): New macro
+ defining Darwin/PowerPC-specific '-f[no-]altivec' and
+ '-W[no-]altivec-long-deprecated' switches.
+ * config/rs6000/rs6000-c (rs6000_cpu_cpp_builtins): Pre-define
+ '__vector', '__pixel' and '__bool' macros using
+ '__attribute__((altivec(...)))' types.
+ * config/rs6000/rs6000.c (bool_char_type_node, bool_short_type_node,
+ bool_int_type_node, pixel_type_node, bool_V16QI_type_node,
+ bool_V8HI_type_node, bool_V4SI_type_node, pixel_V8HI_type_node):
+ New type nodes.
+ (rs6000_warn_altivec_long, rs6000_warn_altivec_long_switch): New, for
+ handling '-W[no-]altivec-long-deprecated'.
+ (rs6000_override_options): Handle '-W[no-]altivec-long-deprecated'.
+ (rs6000_expand_binop_builtin, rs6000_expand_ternop_builtin,
+ altivec_expand_dst_builtin): Remove casts from integer literals.
+ (altivec_expand_builtin): Likewise; handle expansion of new
+ '__builtin_altivec_compiletime_error' function.
+ (rs6000_init_builtins): Initialize 'vector bool ...' and 'vector pixel'
+ types, and make them distinct from other vector types; register
+ '__builtin_altivec_compiletime_error' function.
+ (print_operand): For 'P', print a full target register name instead of
+ merely its number.
+ (rs6000_attribute_table): Add "altivec" attribute.
+ (rs6000_handle_altivec_attribute): New function.
+ * config/rs6000/rs6000.h (TARGET_OPTIONS): Describe
+ '-m[no-]-warn-altivec-long' (which '-W[no-]altivec-long-deprecated'
+ maps to).
+ (rs6000_warn_altivec_long, rs6000_warn_altivec_long_switch): Forward
+ declare.
+ (ALTIVEC_BUILTIN_COMPILETIME_ERROR): New built-in enumeration.
+
2004-02-20 James E Wilson <wilson@specifixinc.com>
* config/ia64/ia64.md (shift_mix4left+1): Delete reload_completed
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 8cf92a0..f56746d 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -97,7 +97,13 @@ Boston, MA 02111-1307, USA. */
Note that an option name with a prefix that matches another option
name, that also takes an argument, needs to be modified so the
prefix is different, otherwise a '*' after the shorter option will
- match with the longer one. */
+ match with the longer one.
+
+ The SUBTARGET_OPTION_TRANSLATE_TABLE macro, which _must_ be defined
+ in gcc/config/{i386,rs6000}/darwin.h, should contain any additional
+ command-line option translations specific to the particular target
+ architecture. */
+
#define TARGET_OPTION_TRANSLATE_TABLE \
{ "-all_load", "-Zall_load" }, \
{ "-allowable_client", "-Zallowable_client" }, \
@@ -124,8 +130,9 @@ Boston, MA 02111-1307, USA. */
{ "-multi_module", "-Zmulti_module" }, \
{ "-static", "-static -Wa,-static" }, \
{ "-single_module", "-Zsingle_module" }, \
- { "-unexported_symbols_list", "-Zunexported_symbols_list" }
-
+ { "-unexported_symbols_list", "-Zunexported_symbols_list" }, \
+ SUBTARGET_OPTION_TRANSLATE_TABLE
+
/* These compiler options take n arguments. */
#undef WORD_SWITCH_TAKES_ARG
diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h
index fd501bf..e99a253a 100644
--- a/gcc/config/i386/darwin.h
+++ b/gcc/config/i386/darwin.h
@@ -51,6 +51,10 @@ Boston, MA 02111-1307, USA. */
#define SUBTARGET_EXTRA_SPECS \
{ "darwin_arch", "i386" },
+/* Use the following macro for any Darwin/x86-specific command-line option
+ translation. */
+#define SUBTARGET_OPTION_TRANSLATE_TABLE
+
/* The Darwin assembler mostly follows AT&T syntax. */
#undef ASSEMBLER_DIALECT
#define ASSEMBLER_DIALECT ASM_ATT
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index 1bd8f45..42779c5 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -32,46 +32,22 @@
#ifndef _ALTIVEC_H
#define _ALTIVEC_H 1
-/* Required by Motorola specs. */
-#define __VEC__ 10206
-
-#ifndef __ALTIVEC__
-#define __ALTIVEC__ 1
+#if !defined(__VEC__) || !defined(__ALTIVEC__)
+#error Use the "-maltivec" flag to enable PowerPC AltiVec support
#endif
-#define __vector __attribute__((vector_size(16)))
-
-/* You are allowed to undef this for C++ compatibility. */
+/* You are allowed to undef these for C++ compatibility. */
#define vector __vector
+#define pixel __pixel
+#define bool __bool
-#define bool signed
-#define pixel unsigned short
-#define __pixel unsigned short
-
-/* Dummy prototype. */
-extern int __altivec_link_error_invalid_argument ();
-
-/* Helper macros. */
+/* Condition register codes for AltiVec predicates. */
#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)
-
/* These are easy... Same exact arguments. */
#define vec_vaddcuw vec_addc
@@ -122,109 +98,201 @@ extern "C++" {
/* 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 float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline));
-inline vector float vec_vcfux (vector unsigned int a1, const char a2) __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 (vector unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dst (float *, int, const char) __attribute__ ((always_inline));
-
-inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline));
-
-inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline));
-
-inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline));
-inline void vec_dstt (float *, 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));
-inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline));
-inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline));
-inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
-inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline));
-inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline));
-inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline));
-inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline));
+inline vector float vec_ctf (vector unsigned int, const int) __attribute__ ((always_inline));
+inline vector float vec_ctf (vector signed int, const int) __attribute__ ((always_inline));
+inline vector float vec_vcfsx (vector signed int a1, const int a2) __attribute__ ((always_inline));
+inline vector float vec_vcfux (vector unsigned int a1, const int a2) __attribute__ ((always_inline));
+inline vector signed int vec_cts (vector float, const int) __attribute__ ((always_inline));
+inline vector unsigned int vec_ctu (vector float, const int) __attribute__ ((always_inline));
+inline void vec_dss (const int) __attribute__ ((always_inline));
+
+inline void vec_dst (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector bool char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector signed short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector bool short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector pixel *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector signed int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector bool int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const vector float *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const unsigned long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dst (const float *, int, const int) __attribute__ ((always_inline));
+
+inline void vec_dstst (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector bool char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector signed short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector bool short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector pixel *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector signed int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector bool int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const vector float *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const unsigned long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstst (const float *, int, const int) __attribute__ ((always_inline));
+
+inline void vec_dststt (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector bool char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector signed short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector bool short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector pixel *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector signed int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector bool int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const vector float *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const unsigned long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dststt (const float *, int, const int) __attribute__ ((always_inline));
+
+inline void vec_dstt (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector bool char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector signed short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector bool short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector pixel *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector signed int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector bool int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const vector float *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const signed char *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const unsigned short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const short *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const unsigned int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const int *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const unsigned long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const long *, int, const int) __attribute__ ((always_inline));
+inline void vec_dstt (const float *, int, const int) __attribute__ ((always_inline));
+
+inline vector float vec_sld (vector float, vector float, const int) __attribute__ ((always_inline));
+inline vector signed int vec_sld (vector signed int, vector signed int, const int) __attribute__ ((always_inline));
+inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const int) __attribute__ ((always_inline));
+inline vector signed short vec_sld (vector signed short, vector signed short, const int) __attribute__ ((always_inline));
+inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const int) __attribute__ ((always_inline));
+inline vector signed char vec_sld (vector signed char, vector signed char, const int) __attribute__ ((always_inline));
+inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const int) __attribute__ ((always_inline));
+inline vector signed char vec_splat (vector signed char, const int) __attribute__ ((always_inline));
+inline vector unsigned char vec_splat (vector unsigned char, const int) __attribute__ ((always_inline));
+inline vector signed short vec_splat (vector signed short, const int) __attribute__ ((always_inline));
+inline vector unsigned short vec_splat (vector unsigned short, const int) __attribute__ ((always_inline));
+inline vector float vec_splat (vector float, const int) __attribute__ ((always_inline));
+inline vector signed int vec_splat (vector signed int, const int) __attribute__ ((always_inline));
+inline vector unsigned int vec_splat (vector unsigned int, const int) __attribute__ ((always_inline));
+inline vector signed char vec_splat_s8 (const int) __attribute__ ((always_inline));
+inline vector signed short vec_splat_s16 (const int) __attribute__ ((always_inline));
+inline vector signed int vec_splat_s32 (const int) __attribute__ ((always_inline));
+inline vector unsigned char vec_splat_u8 (const int) __attribute__ ((always_inline));
+inline vector unsigned short vec_splat_u16 (const int) __attribute__ ((always_inline));
+inline vector unsigned int vec_splat_u32 (const int) __attribute__ ((always_inline));
+inline vector float vec_vspltw (vector float a1, const int a2) __attribute__ ((always_inline));
+inline vector signed int vec_vspltw (vector signed int a1, const int a2) __attribute__ ((always_inline));
+inline vector unsigned int vec_vspltw (vector unsigned int a1, const int a2) __attribute__ ((always_inline));
+inline vector signed short vec_vsplth (vector signed short a1, const int a2) __attribute__ ((always_inline));
+inline vector unsigned short vec_vsplth (vector unsigned short a1, const int a2) __attribute__ ((always_inline));
+inline vector signed char vec_vspltb (vector signed char a1, const int a2) __attribute__ ((always_inline));
+inline vector unsigned char vec_vspltb (vector unsigned char a1, const int a2) __attribute__ ((always_inline));
+
+/* 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 bool short>
+{
+ static const int _S_elem = 8;
+};
+
+template<>
+struct __vec_step_help<vector pixel>
+{
+ 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 bool 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 bool 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<typeof(t)>::_S_elem
/* vec_abs */
@@ -275,19 +343,31 @@ vec_abss (vector signed int a1)
/* vec_add */
inline vector signed char
+vec_add (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_add (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+}
+
+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)
+vec_add (vector bool 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)
+vec_add (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
}
@@ -299,19 +379,31 @@ vec_add (vector unsigned char a1, vector unsigned char a2)
}
inline vector signed short
+vec_add (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_add (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) 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)
+vec_add (vector bool 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)
+vec_add (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
}
@@ -323,19 +415,31 @@ vec_add (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed int
+vec_add (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_add (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) 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)
+vec_add (vector bool 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)
+vec_add (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
}
@@ -449,13 +553,13 @@ vec_addc (vector unsigned int a1, vector unsigned int a2)
/* vec_adds */
inline vector unsigned char
-vec_adds (vector signed char a1, vector unsigned char a2)
+vec_adds (vector bool 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)
+vec_adds (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
}
@@ -467,19 +571,31 @@ vec_adds (vector unsigned char a1, vector unsigned char a2)
}
inline vector signed char
+vec_adds (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_adds (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __builtin_altivec_vaddsbs ((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)
+vec_adds (vector bool 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)
+vec_adds (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
}
@@ -491,19 +607,31 @@ vec_adds (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed short
+vec_adds (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_adds (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __builtin_altivec_vaddshs ((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)
+vec_adds (vector bool 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)
+vec_adds (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
}
@@ -515,6 +643,18 @@ vec_adds (vector unsigned int a1, vector unsigned int a2)
}
inline vector signed int
+vec_adds (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_adds (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __builtin_altivec_vaddsws ((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);
@@ -612,17 +752,35 @@ vec_and (vector float a1, vector float a2)
}
inline vector float
-vec_and (vector float a1, vector signed int a2)
+vec_and (vector float a1, vector bool 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)
+vec_and (vector bool int a1, vector float a2)
{
return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
}
+inline vector bool int
+vec_and (vector bool int a1, vector bool int a2)
+{
+ return (vector bool int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_and (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_and (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __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)
{
@@ -630,13 +788,13 @@ vec_and (vector signed int a1, vector signed int a2)
}
inline vector unsigned int
-vec_and (vector signed int a1, vector unsigned int a2)
+vec_and (vector bool 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)
+vec_and (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
}
@@ -647,6 +805,24 @@ 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 bool short
+vec_and (vector bool short a1, vector bool short a2)
+{
+ return (vector bool short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_and (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_and (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __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)
{
@@ -654,13 +830,13 @@ vec_and (vector signed short a1, vector signed short a2)
}
inline vector unsigned short
-vec_and (vector signed short a1, vector unsigned short a2)
+vec_and (vector bool 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)
+vec_and (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
}
@@ -672,19 +848,37 @@ vec_and (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed char
+vec_and (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_and (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed char
+vec_and (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __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)
+vec_and (vector bool 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)
+vec_and (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
}
@@ -704,17 +898,35 @@ vec_andc (vector float a1, vector float a2)
}
inline vector float
-vec_andc (vector float a1, vector signed int a2)
+vec_andc (vector float a1, vector bool 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)
+vec_andc (vector bool int a1, vector float a2)
{
return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
}
+inline vector bool int
+vec_andc (vector bool int a1, vector bool int a2)
+{
+ return (vector bool int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_andc (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_andc (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __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)
{
@@ -722,13 +934,13 @@ vec_andc (vector signed int a1, vector signed int a2)
}
inline vector unsigned int
-vec_andc (vector signed int a1, vector unsigned int a2)
+vec_andc (vector bool 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)
+vec_andc (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
}
@@ -739,6 +951,24 @@ 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 bool short
+vec_andc (vector bool short a1, vector bool short a2)
+{
+ return (vector bool short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_andc (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_andc (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __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)
{
@@ -746,13 +976,13 @@ vec_andc (vector signed short a1, vector signed short a2)
}
inline vector unsigned short
-vec_andc (vector signed short a1, vector unsigned short a2)
+vec_andc (vector bool 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)
+vec_andc (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
}
@@ -764,19 +994,37 @@ vec_andc (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed char
+vec_andc (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_andc (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed char
+vec_andc (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __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)
+vec_andc (vector bool 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)
+vec_andc (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
}
@@ -891,46 +1139,46 @@ vec_cmpb (vector float a1, vector float a2)
/* vec_cmpeq */
-inline vector signed char
+inline vector bool 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);
+ return (vector bool char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
}
-inline vector signed char
+inline vector bool 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);
+ return (vector bool char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
}
-inline vector signed short
+inline vector bool 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);
+ return (vector bool short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector signed short
+inline vector bool 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);
+ return (vector bool short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector signed int
+inline vector bool 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);
+ return (vector bool int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed int
+inline vector bool 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);
+ return (vector bool int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed int
+inline vector bool int
vec_cmpeq (vector float a1, vector float a2)
{
- return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
+ return (vector bool int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
}
/* vec_vcmpeqfp */
@@ -985,54 +1233,54 @@ vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
/* vec_cmpge */
-inline vector signed int
+inline vector bool int
vec_cmpge (vector float a1, vector float a2)
{
- return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
+ return (vector bool int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
}
/* vec_cmpgt */
-inline vector signed char
+inline vector bool 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);
+ return (vector bool char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
}
-inline vector signed char
+inline vector bool 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);
+ return (vector bool char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
}
-inline vector signed short
+inline vector bool 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);
+ return (vector bool short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector signed short
+inline vector bool 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);
+ return (vector bool short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector signed int
+inline vector bool 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);
+ return (vector bool int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed int
+inline vector bool 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);
+ return (vector bool int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed int
+inline vector bool int
vec_cmpgt (vector float a1, vector float a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
+ return (vector bool int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
}
/* vec_vcmpgtfp */
@@ -1093,66 +1341,66 @@ vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
/* vec_cmple */
-inline vector signed int
+inline vector bool int
vec_cmple (vector float a1, vector float a2)
{
- return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1);
+ return (vector bool int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1);
}
/* vec_cmplt */
-inline vector signed char
+inline vector bool char
vec_cmplt (vector unsigned char a1, vector unsigned char a2)
{
- return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
+ return (vector bool char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
}
-inline vector signed char
+inline vector bool char
vec_cmplt (vector signed char a1, vector signed char a2)
{
- return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
+ return (vector bool char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
}
-inline vector signed short
+inline vector bool short
vec_cmplt (vector unsigned short a1, vector unsigned short a2)
{
- return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
+ return (vector bool short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
}
-inline vector signed short
+inline vector bool short
vec_cmplt (vector signed short a1, vector signed short a2)
{
- return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
+ return (vector bool short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
}
-inline vector signed int
+inline vector bool int
vec_cmplt (vector unsigned int a1, vector unsigned int a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
+ return (vector bool int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
}
-inline vector signed int
+inline vector bool int
vec_cmplt (vector signed int a1, vector signed int a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
+ return (vector bool int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
}
-inline vector signed int
+inline vector bool int
vec_cmplt (vector float a1, vector float a2)
{
- return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
+ return (vector bool int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
}
/* vec_ctf */
inline vector float
-vec_ctf (vector unsigned int a1, const char a2)
+vec_ctf (vector unsigned int a1, const int a2)
{
return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
}
inline vector float
-vec_ctf (vector signed int a1, const char a2)
+vec_ctf (vector signed int a1, const int a2)
{
return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
}
@@ -1160,7 +1408,7 @@ vec_ctf (vector signed int a1, const char a2)
/* vec_vcfsx */
inline vector float
-vec_vcfsx (vector signed int a1, const char a2)
+vec_vcfsx (vector signed int a1, const int a2)
{
return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
}
@@ -1168,7 +1416,7 @@ vec_vcfsx (vector signed int a1, const char a2)
/* vec_vcfux */
inline vector float
-vec_vcfux (vector unsigned int a1, const char a2)
+vec_vcfux (vector unsigned int a1, const int a2)
{
return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
}
@@ -1176,7 +1424,7 @@ vec_vcfux (vector unsigned int a1, const char a2)
/* vec_cts */
inline vector signed int
-vec_cts (vector float a1, const char a2)
+vec_cts (vector float a1, const int a2)
{
return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
}
@@ -1184,7 +1432,7 @@ vec_cts (vector float a1, const char a2)
/* vec_ctu */
inline vector unsigned int
-vec_ctu (vector float a1, const char a2)
+vec_ctu (vector float a1, const int a2)
{
return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
}
@@ -1192,7 +1440,7 @@ vec_ctu (vector float a1, const char a2)
/* vec_dss */
inline void
-vec_dss (const char a1)
+vec_dss (const int a1)
{
__builtin_altivec_dss (a1);
}
@@ -1208,97 +1456,121 @@ vec_dssall (void)
/* vec_dst */
inline void
-vec_dst (vector unsigned char *a1, int a2, const char a3)
+vec_dst (const vector unsigned char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dst (const vector signed char *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (vector signed char *a1, int a2, const char a3)
+vec_dst (const vector bool char *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (vector unsigned short *a1, int a2, const char a3)
+vec_dst (const vector unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (vector signed short *a1, int a2, const char a3)
+vec_dst (const vector signed short *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (vector unsigned int *a1, int a2, const char a3)
+vec_dst (const vector bool short *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (vector signed int *a1, int a2, const char a3)
+vec_dst (const vector pixel *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (vector float *a1, int a2, const char a3)
+vec_dst (const vector unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (unsigned char *a1, int a2, const char a3)
+vec_dst (const vector signed int *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (signed char *a1, int a2, const char a3)
+vec_dst (const vector bool int *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (unsigned short *a1, int a2, const char a3)
+vec_dst (const vector float *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (signed short *a1, int a2, const char a3)
+vec_dst (const unsigned char *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (unsigned int *a1, int a2, const char a3)
+vec_dst (const signed char *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (signed int *a1, int a2, const char a3)
+vec_dst (const unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (unsigned long *a1, int a2, const char a3)
+vec_dst (const short *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (signed long *a1, int a2, const char a3)
+vec_dst (const unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
inline void
-vec_dst (float *a1, int a2, const char a3)
+vec_dst (const int *a1, int a2, const int a3)
+{
+ __builtin_altivec_dst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dst (const unsigned long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dst (const long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dst (float *a1, int a2, const int a3)
{
__builtin_altivec_dst ((void *) a1, a2, a3);
}
@@ -1306,97 +1578,121 @@ vec_dst (float *a1, int a2, const char a3)
/* vec_dstst */
inline void
-vec_dstst (vector unsigned char *a1, int a2, const char a3)
+vec_dstst (const vector unsigned char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstst (const vector signed char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstst (const vector bool char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstst (const vector unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (vector signed char *a1, int a2, const char a3)
+vec_dstst (const vector signed short *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (vector unsigned short *a1, int a2, const char a3)
+vec_dstst (const vector bool short *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (vector signed short *a1, int a2, const char a3)
+vec_dstst (const vector pixel *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (vector unsigned int *a1, int a2, const char a3)
+vec_dstst (const vector unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (vector signed int *a1, int a2, const char a3)
+vec_dstst (const vector signed int *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (vector float *a1, int a2, const char a3)
+vec_dstst (const vector bool int *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (unsigned char *a1, int a2, const char a3)
+vec_dstst (const vector float *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (signed char *a1, int a2, const char a3)
+vec_dstst (const unsigned char *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (unsigned short *a1, int a2, const char a3)
+vec_dstst (const signed char *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (signed short *a1, int a2, const char a3)
+vec_dstst (const unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (unsigned int *a1, int a2, const char a3)
+vec_dstst (const short *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (signed int *a1, int a2, const char a3)
+vec_dstst (const unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (unsigned long *a1, int a2, const char a3)
+vec_dstst (const int *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (signed long *a1, int a2, const char a3)
+vec_dstst (const unsigned long *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
inline void
-vec_dstst (float *a1, int a2, const char a3)
+vec_dstst (const long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstst ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstst (float *a1, int a2, const int a3)
{
__builtin_altivec_dstst ((void *) a1, a2, a3);
}
@@ -1404,97 +1700,121 @@ vec_dstst (float *a1, int a2, const char a3)
/* vec_dststt */
inline void
-vec_dststt (vector unsigned char *a1, int a2, const char a3)
+vec_dststt (const vector unsigned char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dststt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dststt (const vector signed char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dststt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dststt (const vector bool char *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (vector signed char *a1, int a2, const char a3)
+vec_dststt (const vector unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (vector unsigned short *a1, int a2, const char a3)
+vec_dststt (const vector signed short *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (vector signed short *a1, int a2, const char a3)
+vec_dststt (const vector bool short *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (vector unsigned int *a1, int a2, const char a3)
+vec_dststt (const vector pixel *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (vector signed int *a1, int a2, const char a3)
+vec_dststt (const vector unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (vector float *a1, int a2, const char a3)
+vec_dststt (const vector signed int *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (unsigned char *a1, int a2, const char a3)
+vec_dststt (const vector bool int *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (signed char *a1, int a2, const char a3)
+vec_dststt (const vector float *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (unsigned short *a1, int a2, const char a3)
+vec_dststt (const unsigned char *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (signed short *a1, int a2, const char a3)
+vec_dststt (const signed char *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (unsigned int *a1, int a2, const char a3)
+vec_dststt (const unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (signed int *a1, int a2, const char a3)
+vec_dststt (const short *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (unsigned long *a1, int a2, const char a3)
+vec_dststt (const unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (signed long *a1, int a2, const char a3)
+vec_dststt (const int *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
inline void
-vec_dststt (float *a1, int a2, const char a3)
+vec_dststt (const unsigned long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dststt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dststt (const long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dststt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dststt (float *a1, int a2, const int a3)
{
__builtin_altivec_dststt ((void *) a1, a2, a3);
}
@@ -1502,97 +1822,121 @@ vec_dststt (float *a1, int a2, const char a3)
/* vec_dstt */
inline void
-vec_dstt (vector unsigned char *a1, int a2, const char a3)
+vec_dstt (const vector unsigned char *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstt (const vector signed char *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (vector signed char *a1, int a2, const char a3)
+vec_dstt (const vector bool char *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (vector unsigned short *a1, int a2, const char a3)
+vec_dstt (const vector unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (vector signed short *a1, int a2, const char a3)
+vec_dstt (const vector signed short *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (vector unsigned int *a1, int a2, const char a3)
+vec_dstt (const vector bool short *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (vector signed int *a1, int a2, const char a3)
+vec_dstt (const vector pixel *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (vector float *a1, int a2, const char a3)
+vec_dstt (const vector unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (unsigned char *a1, int a2, const char a3)
+vec_dstt (const vector signed int *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (signed char *a1, int a2, const char a3)
+vec_dstt (const vector bool int *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (unsigned short *a1, int a2, const char a3)
+vec_dstt (const vector float *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (signed short *a1, int a2, const char a3)
+vec_dstt (const unsigned char *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (unsigned int *a1, int a2, const char a3)
+vec_dstt (const signed char *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (signed int *a1, int a2, const char a3)
+vec_dstt (const unsigned short *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (unsigned long *a1, int a2, const char a3)
+vec_dstt (const short *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (signed long *a1, int a2, const char a3)
+vec_dstt (const unsigned int *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
inline void
-vec_dstt (float *a1, int a2, const char a3)
+vec_dstt (const int *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstt (const unsigned long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstt (const long *a1, int a2, const int a3)
+{
+ __builtin_altivec_dstt ((void *) a1, a2, a3);
+}
+
+inline void
+vec_dstt (float *a1, int a2, const int a3)
{
__builtin_altivec_dstt ((void *) a1, a2, a3);
}
@@ -1616,97 +1960,121 @@ vec_floor (vector float a1)
/* vec_ld */
inline vector float
-vec_ld (int a1, vector float *a2)
+vec_ld (int a1, const vector float *a2)
{
return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
}
inline vector float
-vec_ld (int a1, float *a2)
+vec_ld (int a1, const float *a2)
{
return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
}
+inline vector bool int
+vec_ld (int a1, const vector bool int *a2)
+{
+ return (vector bool int) __builtin_altivec_lvx (a1, (void *) a2);
+}
+
inline vector signed int
-vec_ld (int a1, vector signed int *a2)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const int *a2)
{
return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
}
inline vector signed int
-vec_ld (int a1, signed long *a2)
+vec_ld (int a1, const long *a2)
{
return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
}
inline vector unsigned int
-vec_ld (int a1, vector unsigned int *a2)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const unsigned int *a2)
{
return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
}
inline vector unsigned int
-vec_ld (int a1, unsigned long *a2)
+vec_ld (int a1, const unsigned long *a2)
{
return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
}
+inline vector bool short
+vec_ld (int a1, const vector bool short *a2)
+{
+ return (vector bool short) __builtin_altivec_lvx (a1, (void *) a2);
+}
+
+inline vector pixel
+vec_ld (int a1, const vector pixel *a2)
+{
+ return (vector pixel) __builtin_altivec_lvx (a1, (void *) a2);
+}
+
inline vector signed short
-vec_ld (int a1, vector signed short *a2)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const short *a2)
{
return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
}
inline vector unsigned short
-vec_ld (int a1, vector unsigned short *a2)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const unsigned short *a2)
{
return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
}
+inline vector bool char
+vec_ld (int a1, const vector bool char *a2)
+{
+ return (vector bool char) __builtin_altivec_lvx (a1, (void *) a2);
+}
+
inline vector signed char
-vec_ld (int a1, vector signed char *a2)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const 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)
+vec_ld (int a1, const unsigned char *a2)
{
return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
}
@@ -1714,55 +2082,55 @@ vec_ld (int a1, unsigned char *a2)
/* vec_lde */
inline vector signed char
-vec_lde (int a1, signed char *a2)
+vec_lde (int a1, const signed char *a2)
{
return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
}
inline vector unsigned char
-vec_lde (int a1, unsigned char *a2)
+vec_lde (int a1, const unsigned char *a2)
{
return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
}
inline vector signed short
-vec_lde (int a1, signed short *a2)
+vec_lde (int a1, const short *a2)
{
return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
}
inline vector unsigned short
-vec_lde (int a1, unsigned short *a2)
+vec_lde (int a1, const unsigned short *a2)
{
return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
}
inline vector float
-vec_lde (int a1, float *a2)
+vec_lde (int a1, const float *a2)
{
return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector signed int
-vec_lde (int a1, signed int *a2)
+vec_lde (int a1, const int *a2)
{
return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector unsigned int
-vec_lde (int a1, unsigned int *a2)
+vec_lde (int a1, const unsigned int *a2)
{
return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector signed int
-vec_lde (int a1, signed long *a2)
+vec_lde (int a1, const long *a2)
{
return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector unsigned int
-vec_lde (int a1, unsigned long *a2)
+vec_lde (int a1, const unsigned long *a2)
{
return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}
@@ -1770,31 +2138,31 @@ vec_lde (int a1, unsigned long *a2)
/* vec_lvewx */
inline vector float
-vec_lvewx (int a1, float *a2)
+vec_lvewx (int a1, const float *a2)
{
return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector signed int
-vec_lvewx (int a1, signed int *a2)
+vec_lvewx (int a1, const int *a2)
{
return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector unsigned int
-vec_lvewx (int a1, unsigned int *a2)
+vec_lvewx (int a1, const unsigned int *a2)
{
return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector signed int
-vec_lvewx (int a1, signed long *a2)
+vec_lvewx (int a1, const long *a2)
{
return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
}
inline vector unsigned int
-vec_lvewx (int a1, unsigned long *a2)
+vec_lvewx (int a1, const unsigned long *a2)
{
return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}
@@ -1802,13 +2170,13 @@ vec_lvewx (int a1, unsigned long *a2)
/* vec_lvehx */
inline vector signed short
-vec_lvehx (int a1, signed short *a2)
+vec_lvehx (int a1, const short *a2)
{
return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
}
inline vector unsigned short
-vec_lvehx (int a1, unsigned short *a2)
+vec_lvehx (int a1, const unsigned short *a2)
{
return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
}
@@ -1816,13 +2184,13 @@ vec_lvehx (int a1, unsigned short *a2)
/* vec_lvebx */
inline vector signed char
-vec_lvebx (int a1, signed char *a2)
+vec_lvebx (int a1, const signed char *a2)
{
return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvebx (int a1, unsigned char *a2)
+vec_lvebx (int a1, const int *a2)
{
return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
}
@@ -1830,97 +2198,121 @@ vec_lvebx (int a1, unsigned char *a2)
/* vec_ldl */
inline vector float
-vec_ldl (int a1, vector float *a2)
+vec_ldl (int a1, const vector float *a2)
{
return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
}
inline vector float
-vec_ldl (int a1, float *a2)
+vec_ldl (int a1, const float *a2)
{
return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
}
+inline vector bool int
+vec_ldl (int a1, const vector bool int *a2)
+{
+ return (vector bool int) __builtin_altivec_lvxl (a1, (void *) a2);
+}
+
inline vector signed int
-vec_ldl (int a1, vector signed int *a2)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const int *a2)
{
return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
}
inline vector signed int
-vec_ldl (int a1, signed long *a2)
+vec_ldl (int a1, const long *a2)
{
return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
}
inline vector unsigned int
-vec_ldl (int a1, vector unsigned int *a2)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const unsigned int *a2)
{
return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
}
inline vector unsigned int
-vec_ldl (int a1, unsigned long *a2)
+vec_ldl (int a1, const unsigned long *a2)
{
return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
}
+inline vector bool short
+vec_ldl (int a1, const vector bool short *a2)
+{
+ return (vector bool short) __builtin_altivec_lvxl (a1, (void *) a2);
+}
+
+inline vector pixel
+vec_ldl (int a1, const vector pixel *a2)
+{
+ return (vector pixel) __builtin_altivec_lvxl (a1, (void *) a2);
+}
+
inline vector signed short
-vec_ldl (int a1, vector signed short *a2)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const short *a2)
{
return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
}
inline vector unsigned short
-vec_ldl (int a1, vector unsigned short *a2)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const unsigned short *a2)
{
return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
}
+inline vector bool char
+vec_ldl (int a1, const vector bool char *a2)
+{
+ return (vector bool char) __builtin_altivec_lvxl (a1, (void *) a2);
+}
+
inline vector signed char
-vec_ldl (int a1, vector signed char *a2)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const 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)
+vec_ldl (int a1, const unsigned char *a2)
{
return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
}
@@ -1936,55 +2328,55 @@ vec_loge (vector float a1)
/* vec_lvsl */
inline vector unsigned char
-vec_lvsl (int a1, unsigned char *a2)
+vec_lvsl (int a1, const volatile unsigned char *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, signed char *a2)
+vec_lvsl (int a1, const volatile signed char *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, unsigned short *a2)
+vec_lvsl (int a1, const volatile unsigned short *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, signed short *a2)
+vec_lvsl (int a1, const volatile short *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, unsigned int *a2)
+vec_lvsl (int a1, const volatile unsigned int *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, signed int *a2)
+vec_lvsl (int a1, const volatile int *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, unsigned long *a2)
+vec_lvsl (int a1, const volatile unsigned long *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, signed long *a2)
+vec_lvsl (int a1, const volatile long *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsl (int a1, float *a2)
+vec_lvsl (int a1, const volatile float *a2)
{
return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
}
@@ -1992,55 +2384,55 @@ vec_lvsl (int a1, float *a2)
/* vec_lvsr */
inline vector unsigned char
-vec_lvsr (int a1, unsigned char *a2)
+vec_lvsr (int a1, const volatile unsigned char *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, signed char *a2)
+vec_lvsr (int a1, const volatile signed char *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, unsigned short *a2)
+vec_lvsr (int a1, const volatile unsigned short *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, signed short *a2)
+vec_lvsr (int a1, const volatile short *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, unsigned int *a2)
+vec_lvsr (int a1, const volatile unsigned int *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, signed int *a2)
+vec_lvsr (int a1, const volatile int *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, unsigned long *a2)
+vec_lvsr (int a1, const volatile unsigned long *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, signed long *a2)
+vec_lvsr (int a1, const volatile long *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
inline vector unsigned char
-vec_lvsr (int a1, float *a2)
+vec_lvsr (int a1, const volatile float *a2)
{
return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
}
@@ -2053,7 +2445,6 @@ 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
@@ -2065,13 +2456,13 @@ vec_madds (vector signed short a1, vector signed short a2, vector signed short a
/* vec_max */
inline vector unsigned char
-vec_max (vector signed char a1, vector unsigned char a2)
+vec_max (vector bool 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)
+vec_max (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
}
@@ -2083,19 +2474,31 @@ vec_max (vector unsigned char a1, vector unsigned char a2)
}
inline vector signed char
+vec_max (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_max (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __builtin_altivec_vmaxsb ((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)
+vec_max (vector bool 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)
+vec_max (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
}
@@ -2107,19 +2510,31 @@ vec_max (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed short
+vec_max (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_max (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __builtin_altivec_vmaxsh ((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)
+vec_max (vector bool 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)
+vec_max (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
}
@@ -2131,6 +2546,18 @@ vec_max (vector unsigned int a1, vector unsigned int a2)
}
inline vector signed int
+vec_max (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_max (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __builtin_altivec_vmaxsw ((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);
@@ -2236,6 +2663,12 @@ vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
/* vec_mergeh */
+inline vector bool char
+vec_mergeh (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
+}
+
inline vector signed char
vec_mergeh (vector signed char a1, vector signed char a2)
{
@@ -2248,6 +2681,18 @@ 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 bool short
+vec_mergeh (vector bool short a1, vector bool short a2)
+{
+ return (vector bool short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector pixel
+vec_mergeh (vector pixel a1, vector pixel a2)
+{
+ return (vector pixel) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
+}
+
inline vector signed short
vec_mergeh (vector signed short a1, vector signed short a2)
{
@@ -2266,6 +2711,12 @@ vec_mergeh (vector float a1, vector float a2)
return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
}
+inline vector bool int
+vec_mergeh (vector bool int a1, vector bool int a2)
+{
+ return (vector bool int) __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)
{
@@ -2328,6 +2779,12 @@ vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
/* vec_mergel */
+inline vector bool char
+vec_mergel (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
+}
+
inline vector signed char
vec_mergel (vector signed char a1, vector signed char a2)
{
@@ -2340,6 +2797,18 @@ 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 bool short
+vec_mergel (vector bool short a1, vector bool short a2)
+{
+ return (vector bool short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector pixel
+vec_mergel (vector pixel a1, vector pixel a2)
+{
+ return (vector pixel) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
+}
+
inline vector signed short
vec_mergel (vector signed short a1, vector signed short a2)
{
@@ -2358,6 +2827,12 @@ vec_mergel (vector float a1, vector float a2)
return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
}
+inline vector bool int
+vec_mergel (vector bool int a1, vector bool int a2)
+{
+ return (vector bool int) __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)
{
@@ -2429,13 +2904,13 @@ vec_mfvscr (void)
/* vec_min */
inline vector unsigned char
-vec_min (vector signed char a1, vector unsigned char a2)
+vec_min (vector bool 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)
+vec_min (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
}
@@ -2447,19 +2922,31 @@ vec_min (vector unsigned char a1, vector unsigned char a2)
}
inline vector signed char
+vec_min (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_min (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __builtin_altivec_vminsb ((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)
+vec_min (vector bool 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)
+vec_min (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
}
@@ -2471,19 +2958,31 @@ vec_min (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed short
+vec_min (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_min (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __builtin_altivec_vminsh ((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)
+vec_min (vector bool 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)
+vec_min (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
}
@@ -2495,6 +2994,18 @@ vec_min (vector unsigned int a1, vector unsigned int a2)
}
inline vector signed int
+vec_min (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_min (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __builtin_altivec_vminsw ((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);
@@ -2735,6 +3246,12 @@ vec_mtvscr (vector unsigned int a1)
}
inline void
+vec_mtvscr (vector bool int a1)
+{
+ __builtin_altivec_mtvscr ((vector signed int) a1);
+}
+
+inline void
vec_mtvscr (vector signed short a1)
{
__builtin_altivec_mtvscr ((vector signed int) a1);
@@ -2747,6 +3264,18 @@ vec_mtvscr (vector unsigned short a1)
}
inline void
+vec_mtvscr (vector bool short a1)
+{
+ __builtin_altivec_mtvscr ((vector signed int) a1);
+}
+
+inline void
+vec_mtvscr (vector pixel a1)
+{
+ __builtin_altivec_mtvscr ((vector signed int) a1);
+}
+
+inline void
vec_mtvscr (vector signed char a1)
{
__builtin_altivec_mtvscr ((vector signed int) a1);
@@ -2758,6 +3287,12 @@ vec_mtvscr (vector unsigned char a1)
__builtin_altivec_mtvscr ((vector signed int) a1);
}
+inline void
+vec_mtvscr (vector bool char a1)
+{
+ __builtin_altivec_mtvscr ((vector signed int) a1);
+}
+
/* vec_mule */
inline vector unsigned short
@@ -2893,6 +3428,12 @@ 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 bool int
+vec_nor (vector bool int a1, vector bool int a2)
+{
+ return (vector bool 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)
{
@@ -2905,6 +3446,12 @@ 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 bool short
+vec_nor (vector bool short a1, vector bool short a2)
+{
+ return (vector bool 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)
{
@@ -2917,6 +3464,12 @@ 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);
}
+inline vector bool char
+vec_nor (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
+}
+
/* vec_or */
inline vector float
@@ -2926,17 +3479,35 @@ vec_or (vector float a1, vector float a2)
}
inline vector float
-vec_or (vector float a1, vector signed int a2)
+vec_or (vector float a1, vector bool 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)
+vec_or (vector bool int a1, vector float a2)
{
return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
}
+inline vector bool int
+vec_or (vector bool int a1, vector bool int a2)
+{
+ return (vector bool int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_or (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_or (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __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)
{
@@ -2944,13 +3515,13 @@ vec_or (vector signed int a1, vector signed int a2)
}
inline vector unsigned int
-vec_or (vector signed int a1, vector unsigned int a2)
+vec_or (vector bool 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)
+vec_or (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
}
@@ -2961,6 +3532,24 @@ 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 bool short
+vec_or (vector bool short a1, vector bool short a2)
+{
+ return (vector bool short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_or (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_or (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __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)
{
@@ -2968,13 +3557,13 @@ vec_or (vector signed short a1, vector signed short a2)
}
inline vector unsigned short
-vec_or (vector signed short a1, vector unsigned short a2)
+vec_or (vector bool 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)
+vec_or (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
}
@@ -2986,19 +3575,37 @@ vec_or (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed char
+vec_or (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_or (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed char
+vec_or (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __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)
+vec_or (vector bool 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)
+vec_or (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
}
@@ -3023,6 +3630,12 @@ 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 bool char
+vec_pack (vector bool short a1, vector bool short a2)
+{
+ return (vector bool 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)
{
@@ -3035,6 +3648,12 @@ 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);
}
+inline vector bool short
+vec_pack (vector bool int a1, vector bool int a2)
+{
+ return (vector bool short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
+}
+
/* vec_vpkuwum */
inline vector signed short
@@ -3065,10 +3684,10 @@ vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
/* vec_packpx */
-inline vector unsigned short
+inline vector pixel
vec_packpx (vector unsigned int a1, vector unsigned int a2)
{
- return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
+ return (vector pixel) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
}
/* vec_packs */
@@ -3191,6 +3810,12 @@ vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a
return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
}
+inline vector bool int
+vec_perm (vector bool int a1, vector bool int a2, vector unsigned char a3)
+{
+ return (vector bool 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)
{
@@ -3203,6 +3828,18 @@ vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned ch
return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
}
+inline vector bool short
+vec_perm (vector bool short a1, vector bool short a2, vector unsigned char a3)
+{
+ return (vector bool short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
+}
+
+inline vector pixel
+vec_perm (vector pixel a1, vector pixel a2, vector unsigned char a3)
+{
+ return (vector pixel) __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)
{
@@ -3215,6 +3852,12 @@ vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char
return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
}
+inline vector bool char
+vec_perm (vector bool char a1, vector bool char a2, vector bool char a3)
+{
+ return (vector bool char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
+}
+
/* vec_re */
inline vector float
@@ -3322,7 +3965,7 @@ vec_rsqrte (vector float a1)
/* vec_sel */
inline vector float
-vec_sel (vector float a1, vector float a2, vector signed int a3)
+vec_sel (vector float a1, vector float a2, vector bool int a3)
{
return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3334,7 +3977,7 @@ vec_sel (vector float a1, vector float a2, vector unsigned int a3)
}
inline vector signed int
-vec_sel (vector signed int a1, vector signed int a2, vector signed int a3)
+vec_sel (vector signed int a1, vector signed int a2, vector bool int a3)
{
return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3346,7 +3989,7 @@ vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
}
inline vector unsigned int
-vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3)
+vec_sel (vector unsigned int a1, vector unsigned int a2, vector bool int a3)
{
return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3357,8 +4000,20 @@ 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 bool int
+vec_sel (vector bool int a1, vector bool int a2, vector bool int a3)
+{
+ return (vector bool int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
+}
+
+inline vector bool int
+vec_sel (vector bool int a1, vector bool int a2, vector unsigned int a3)
+{
+ return (vector bool 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)
+vec_sel (vector signed short a1, vector signed short a2, vector bool short a3)
{
return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3370,7 +4025,7 @@ vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a
}
inline vector unsigned short
-vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
+vec_sel (vector unsigned short a1, vector unsigned short a2, vector bool short a3)
{
return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3381,8 +4036,20 @@ vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned sho
return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
+inline vector bool short
+vec_sel (vector bool short a1, vector bool short a2, vector bool short a3)
+{
+ return (vector bool short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
+}
+
+inline vector bool short
+vec_sel (vector bool short a1, vector bool short a2, vector unsigned short a3)
+{
+ return (vector bool 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)
+vec_sel (vector signed char a1, vector signed char a2, vector bool char a3)
{
return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3394,7 +4061,7 @@ vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
}
inline vector unsigned char
-vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3)
+vec_sel (vector unsigned char a1, vector unsigned char a2, vector bool char a3)
{
return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
@@ -3405,6 +4072,18 @@ vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char
return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
}
+inline vector bool char
+vec_sel (vector bool char a1, vector bool char a2, vector bool char a3)
+{
+ return (vector bool char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
+}
+
+inline vector bool char
+vec_sel (vector bool char a1, vector bool char a2, vector unsigned char a3)
+{
+ return (vector bool char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
+}
+
/* vec_sl */
inline vector signed char
@@ -3488,43 +4167,49 @@ vec_vslb (vector unsigned char a1, vector unsigned char a2)
/* vec_sld */
inline vector float
-vec_sld (vector float a1, vector float a2, const char a3)
+vec_sld (vector float a1, vector float a2, const int 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)
+vec_sld (vector signed int a1, vector signed int a2, const int 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)
+vec_sld (vector unsigned int a1, vector unsigned int a2, const int 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)
+vec_sld (vector signed short a1, vector signed short a2, const int 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)
+vec_sld (vector unsigned short a1, vector unsigned short a2, const int a3)
{
return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
}
+inline vector pixel
+vec_sld (vector pixel a1, vector pixel a2, const int a3)
+{
+ return (vector pixel) __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)
+vec_sld (vector signed char a1, vector signed char a2, const int 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)
+vec_sld (vector unsigned char a1, vector unsigned char a2, const int a3)
{
return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
}
@@ -3567,6 +4252,24 @@ 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 bool int
+vec_sll (vector bool int a1, vector unsigned int a2)
+{
+ return (vector bool int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool int
+vec_sll (vector bool int a1, vector unsigned short a2)
+{
+ return (vector bool int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool int
+vec_sll (vector bool int a1, vector unsigned char a2)
+{
+ return (vector bool 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)
{
@@ -3603,6 +4306,42 @@ 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 bool short
+vec_sll (vector bool short a1, vector unsigned int a2)
+{
+ return (vector bool short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool short
+vec_sll (vector bool short a1, vector unsigned short a2)
+{
+ return (vector bool short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool short
+vec_sll (vector bool short a1, vector unsigned char a2)
+{
+ return (vector bool short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_sll (vector pixel a1, vector unsigned int a2)
+{
+ return (vector pixel) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_sll (vector pixel a1, vector unsigned short a2)
+{
+ return (vector pixel) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_sll (vector pixel a1, vector unsigned char a2)
+{
+ return (vector pixel) __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)
{
@@ -3639,6 +4378,24 @@ 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);
}
+inline vector bool char
+vec_sll (vector bool char a1, vector unsigned int a2)
+{
+ return (vector bool char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_sll (vector bool char a1, vector unsigned short a2)
+{
+ return (vector bool char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_sll (vector bool char a1, vector unsigned char a2)
+{
+ return (vector bool char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
+}
+
/* vec_slo */
inline vector float
@@ -3701,6 +4458,18 @@ 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 pixel
+vec_slo (vector pixel a1, vector signed char a2)
+{
+ return (vector pixel) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_slo (vector pixel a1, vector unsigned char a2)
+{
+ return (vector pixel) __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)
{
@@ -3728,63 +4497,87 @@ vec_slo (vector unsigned char a1, vector unsigned char a2)
/* vec_splat */
inline vector signed char
-vec_splat (vector signed char a1, const char a2)
+vec_splat (vector signed char a1, const int 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)
+vec_splat (vector unsigned char a1, const int a2)
{
return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
}
+inline vector bool char
+vec_splat (vector bool char a1, const int a2)
+{
+ return (vector bool char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
+}
+
inline vector signed short
-vec_splat (vector signed short a1, const char a2)
+vec_splat (vector signed short a1, const int 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)
+vec_splat (vector unsigned short a1, const int a2)
{
return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
}
+inline vector bool short
+vec_splat (vector bool short a1, const int a2)
+{
+ return (vector bool short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
+}
+
+inline vector pixel
+vec_splat (vector pixel a1, const int a2)
+{
+ return (vector pixel) __builtin_altivec_vsplth ((vector signed short) a1, a2);
+}
+
inline vector float
-vec_splat (vector float a1, const char a2)
+vec_splat (vector float a1, const int 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)
+vec_splat (vector signed int a1, const int 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)
+vec_splat (vector unsigned int a1, const int a2)
{
return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
}
+inline vector bool int
+vec_splat (vector bool int a1, const int a2)
+{
+ return (vector bool int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
+}
+
/* vec_vspltw */
inline vector float
-vec_vspltw (vector float a1, const char a2)
+vec_vspltw (vector float a1, const int a2)
{
return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
}
inline vector signed int
-vec_vspltw (vector signed int a1, const char a2)
+vec_vspltw (vector signed int a1, const int a2)
{
return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
}
inline vector unsigned int
-vec_vspltw (vector unsigned int a1, const char a2)
+vec_vspltw (vector unsigned int a1, const int a2)
{
return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
}
@@ -3792,13 +4585,13 @@ vec_vspltw (vector unsigned int a1, const char a2)
/* vec_vsplth */
inline vector signed short
-vec_vsplth (vector signed short a1, const char a2)
+vec_vsplth (vector signed short a1, const int a2)
{
return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
}
inline vector unsigned short
-vec_vsplth (vector unsigned short a1, const char a2)
+vec_vsplth (vector unsigned short a1, const int a2)
{
return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
}
@@ -3806,13 +4599,13 @@ vec_vsplth (vector unsigned short a1, const char a2)
/* vec_vspltb */
inline vector signed char
-vec_vspltb (vector signed char a1, const char a2)
+vec_vspltb (vector signed char a1, const int a2)
{
return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
}
inline vector unsigned char
-vec_vspltb (vector unsigned char a1, const char a2)
+vec_vspltb (vector unsigned char a1, const int a2)
{
return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
}
@@ -3820,7 +4613,7 @@ vec_vspltb (vector unsigned char a1, const char a2)
/* vec_splat_s8 */
inline vector signed char
-vec_splat_s8 (const char a1)
+vec_splat_s8 (const signed char a1)
{
return (vector signed char) __builtin_altivec_vspltisb (a1);
}
@@ -3828,7 +4621,7 @@ vec_splat_s8 (const char a1)
/* vec_splat_s16 */
inline vector signed short
-vec_splat_s16 (const char a1)
+vec_splat_s16 (const signed char a1)
{
return (vector signed short) __builtin_altivec_vspltish (a1);
}
@@ -3836,7 +4629,7 @@ vec_splat_s16 (const char a1)
/* vec_splat_s32 */
inline vector signed int
-vec_splat_s32 (const char a1)
+vec_splat_s32 (const signed char a1)
{
return (vector signed int) __builtin_altivec_vspltisw (a1);
}
@@ -3844,7 +4637,7 @@ vec_splat_s32 (const char a1)
/* vec_splat_u8 */
inline vector unsigned char
-vec_splat_u8 (const char a1)
+vec_splat_u8 (const signed char a1)
{
return (vector unsigned char) __builtin_altivec_vspltisb (a1);
}
@@ -3852,7 +4645,7 @@ vec_splat_u8 (const char a1)
/* vec_splat_u16 */
inline vector unsigned short
-vec_splat_u16 (const char a1)
+vec_splat_u16 (const signed char a1)
{
return (vector unsigned short) __builtin_altivec_vspltish (a1);
}
@@ -3860,7 +4653,7 @@ vec_splat_u16 (const char a1)
/* vec_splat_u32 */
inline vector unsigned int
-vec_splat_u32 (const char a1)
+vec_splat_u32 (const signed char a1)
{
return (vector unsigned int) __builtin_altivec_vspltisw (a1);
}
@@ -4063,6 +4856,24 @@ 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 bool int
+vec_srl (vector bool int a1, vector unsigned int a2)
+{
+ return (vector bool int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool int
+vec_srl (vector bool int a1, vector unsigned short a2)
+{
+ return (vector bool int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool int
+vec_srl (vector bool int a1, vector unsigned char a2)
+{
+ return (vector bool 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)
{
@@ -4099,6 +4910,42 @@ 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 bool short
+vec_srl (vector bool short a1, vector unsigned int a2)
+{
+ return (vector bool short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool short
+vec_srl (vector bool short a1, vector unsigned short a2)
+{
+ return (vector bool short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool short
+vec_srl (vector bool short a1, vector unsigned char a2)
+{
+ return (vector bool short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_srl (vector pixel a1, vector unsigned int a2)
+{
+ return (vector pixel) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_srl (vector pixel a1, vector unsigned short a2)
+{
+ return (vector pixel) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_srl (vector pixel a1, vector unsigned char a2)
+{
+ return (vector pixel) __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)
{
@@ -4135,6 +4982,24 @@ 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);
}
+inline vector bool char
+vec_srl (vector bool char a1, vector unsigned int a2)
+{
+ return (vector bool char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_srl (vector bool char a1, vector unsigned short a2)
+{
+ return (vector bool char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_srl (vector bool char a1, vector unsigned char a2)
+{
+ return (vector bool char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
+}
+
/* vec_sro */
inline vector float
@@ -4197,6 +5062,18 @@ 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 pixel
+vec_sro (vector pixel a1, vector signed char a2)
+{
+ return (vector pixel) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector pixel
+vec_sro (vector pixel a1, vector unsigned char a2)
+{
+ return (vector pixel) __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)
{
@@ -4224,43 +5101,139 @@ vec_sro (vector unsigned char a1, vector unsigned char a2)
/* vec_st */
inline void
-vec_st (vector float a1, int a2, void *a3)
+vec_st (vector float a1, int a2, vector float *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector float a1, int a2, float *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector signed int a1, int a2, vector signed int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector signed int a1, int a2, int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector unsigned int a1, int a2, vector unsigned int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector unsigned int a1, int a2, unsigned int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector bool int a1, int a2, vector bool int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector bool int a1, int a2, unsigned int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector bool int a1, int a2, int *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector signed short a1, int a2, vector signed short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector signed short a1, int a2, short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector unsigned short a1, int a2, vector unsigned short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector unsigned short a1, int a2, unsigned short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector bool short a1, int a2, vector bool short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector bool short a1, int a2, unsigned short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector bool short a1, int a2, short *a3)
+{
+ __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_st (vector signed char a1, int a2, vector signed char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_st (vector signed int a1, int a2, void *a3)
+vec_st (vector signed char a1, int a2, signed char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_st (vector unsigned int a1, int a2, void *a3)
+vec_st (vector unsigned char a1, int a2, vector unsigned char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_st (vector signed short a1, int a2, void *a3)
+vec_st (vector unsigned char a1, int a2, unsigned char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_st (vector unsigned short a1, int a2, void *a3)
+vec_st (vector bool char a1, int a2, vector bool char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_st (vector signed char a1, int a2, void *a3)
+vec_st (vector bool char a1, int a2, unsigned char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_st (vector unsigned char a1, int a2, void *a3)
+vec_st (vector bool char a1, int a2, signed char *a3)
{
__builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
}
@@ -4268,43 +5241,91 @@ vec_st (vector unsigned char a1, int a2, void *a3)
/* vec_ste */
inline void
-vec_ste (vector signed char a1, int a2, void *a3)
+vec_ste (vector signed char a1, int a2, signed char *a3)
+{
+ __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector unsigned char a1, int a2, unsigned char *a3)
{
__builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
}
inline void
-vec_ste (vector unsigned char a1, int a2, void *a3)
+vec_ste (vector bool char a1, int a2, signed char *a3)
{
__builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
}
inline void
-vec_ste (vector signed short a1, int a2, void *a3)
+vec_ste (vector bool char a1, int a2, unsigned char *a3)
+{
+ __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector signed short a1, int a2, short *a3)
+{
+ __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector unsigned short a1, int a2, unsigned short *a3)
+{
+ __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector bool short a1, int a2, short *a3)
+{
+ __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector bool short a1, int a2, unsigned short *a3)
+{
+ __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector pixel a1, int a2, short *a3)
{
__builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
}
inline void
-vec_ste (vector unsigned short a1, int a2, void *a3)
+vec_ste (vector pixel a1, int a2, unsigned short *a3)
{
__builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
}
inline void
-vec_ste (vector float a1, int a2, void *a3)
+vec_ste (vector float a1, int a2, float *a3)
+{
+ __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector signed int a1, int a2, int *a3)
{
__builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_ste (vector signed int a1, int a2, void *a3)
+vec_ste (vector unsigned int a1, int a2, unsigned int *a3)
{
__builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_ste (vector unsigned int a1, int a2, void *a3)
+vec_ste (vector bool int a1, int a2, int *a3)
+{
+ __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_ste (vector bool int a1, int a2, unsigned int *a3)
{
__builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
}
@@ -4360,43 +5381,139 @@ vec_stvebx (vector unsigned char a1, int a2, void *a3)
/* vec_stl */
inline void
-vec_stl (vector float a1, int a2, void *a3)
+vec_stl (vector float a1, int a2, vector float *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector float a1, int a2, float *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector signed int a1, int a2, vector signed int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector signed int a1, int a2, int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector unsigned int a1, int a2, vector unsigned int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector unsigned int a1, int a2, unsigned int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector bool int a1, int a2, vector bool int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector bool int a1, int a2, unsigned int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector bool int a1, int a2, int *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector signed short a1, int a2, vector signed short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector signed short a1, int a2, short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector unsigned short a1, int a2, vector unsigned short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector unsigned short a1, int a2, unsigned short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector bool short a1, int a2, vector bool short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector bool short a1, int a2, unsigned short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector bool short a1, int a2, short *a3)
+{
+ __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stl (vector signed char a1, int a2, vector signed char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_stl (vector signed int a1, int a2, void *a3)
+vec_stl (vector signed char a1, int a2, signed char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_stl (vector unsigned int a1, int a2, void *a3)
+vec_stl (vector unsigned char a1, int a2, vector unsigned char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_stl (vector signed short a1, int a2, void *a3)
+vec_stl (vector unsigned char a1, int a2, unsigned char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_stl (vector unsigned short a1, int a2, void *a3)
+vec_stl (vector bool char a1, int a2, vector bool char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_stl (vector signed char a1, int a2, void *a3)
+vec_stl (vector bool char a1, int a2, unsigned char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
inline void
-vec_stl (vector unsigned char a1, int a2, void *a3)
+vec_stl (vector bool char a1, int a2, signed char *a3)
{
__builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
}
@@ -4404,19 +5521,31 @@ vec_stl (vector unsigned char a1, int a2, void *a3)
/* vec_sub */
inline vector signed char
+vec_sub (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_sub (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+}
+
+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)
+vec_sub (vector bool 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)
+vec_sub (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
}
@@ -4428,19 +5557,31 @@ vec_sub (vector unsigned char a1, vector unsigned char a2)
}
inline vector signed short
+vec_sub (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_sub (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) 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)
+vec_sub (vector bool 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)
+vec_sub (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
}
@@ -4452,19 +5593,31 @@ vec_sub (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed int
+vec_sub (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_sub (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) 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)
+vec_sub (vector bool 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)
+vec_sub (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
}
@@ -4578,13 +5731,13 @@ vec_subc (vector unsigned int a1, vector unsigned int a2)
/* vec_subs */
inline vector unsigned char
-vec_subs (vector signed char a1, vector unsigned char a2)
+vec_subs (vector bool 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)
+vec_subs (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
}
@@ -4596,19 +5749,31 @@ vec_subs (vector unsigned char a1, vector unsigned char a2)
}
inline vector signed char
+vec_subs (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_subs (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __builtin_altivec_vsubsbs ((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)
+vec_subs (vector bool 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)
+vec_subs (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
}
@@ -4620,19 +5785,31 @@ vec_subs (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed short
+vec_subs (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_subs (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __builtin_altivec_vsubshs ((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)
+vec_subs (vector bool 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)
+vec_subs (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
}
@@ -4644,6 +5821,18 @@ vec_subs (vector unsigned int a1, vector unsigned int a2)
}
inline vector signed int
+vec_subs (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_subs (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __builtin_altivec_vsubsws ((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);
@@ -4823,14 +6012,26 @@ vec_unpackh (vector signed char a1)
return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
}
+inline vector signed short
+vec_unpackh (vector bool 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);
}
+inline vector signed int
+vec_unpackh (vector bool short a1)
+{
+ return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
+}
+
inline vector unsigned int
-vec_unpackh (vector unsigned short a1)
+vec_unpackh (vector pixel a1)
{
return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
}
@@ -4867,8 +6068,14 @@ vec_unpackl (vector signed char a1)
return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
}
+inline vector signed short
+vec_unpackl (vector bool char a1)
+{
+ return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
+}
+
inline vector unsigned int
-vec_unpackl (vector unsigned short a1)
+vec_unpackl (vector pixel a1)
{
return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
}
@@ -4879,6 +6086,12 @@ vec_unpackl (vector signed short a1)
return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
}
+inline vector signed int
+vec_unpackl (vector bool short a1)
+{
+ return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
+}
+
/* vec_vupklpx */
inline vector unsigned int
@@ -4912,17 +6125,35 @@ vec_xor (vector float a1, vector float a2)
}
inline vector float
-vec_xor (vector float a1, vector signed int a2)
+vec_xor (vector float a1, vector bool 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)
+vec_xor (vector bool int a1, vector float a2)
{
return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
}
+inline vector bool int
+vec_xor (vector bool int a1, vector bool int a2)
+{
+ return (vector bool int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_xor (vector bool int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_xor (vector signed int a1, vector bool int a2)
+{
+ return (vector signed int) __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)
{
@@ -4930,13 +6161,13 @@ vec_xor (vector signed int a1, vector signed int a2)
}
inline vector unsigned int
-vec_xor (vector signed int a1, vector unsigned int a2)
+vec_xor (vector bool 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)
+vec_xor (vector unsigned int a1, vector bool int a2)
{
return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
}
@@ -4947,6 +6178,24 @@ 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 bool short
+vec_xor (vector bool short a1, vector bool short a2)
+{
+ return (vector bool short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_xor (vector bool short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed short
+vec_xor (vector signed short a1, vector bool short a2)
+{
+ return (vector signed short) __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)
{
@@ -4954,13 +6203,13 @@ vec_xor (vector signed short a1, vector signed short a2)
}
inline vector unsigned short
-vec_xor (vector signed short a1, vector unsigned short a2)
+vec_xor (vector bool 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)
+vec_xor (vector unsigned short a1, vector bool short a2)
{
return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
}
@@ -4972,19 +6221,37 @@ vec_xor (vector unsigned short a1, vector unsigned short a2)
}
inline vector signed char
+vec_xor (vector bool char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector bool char
+vec_xor (vector bool char a1, vector bool char a2)
+{
+ return (vector bool char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed char
+vec_xor (vector signed char a1, vector bool char a2)
+{
+ return (vector signed char) __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)
+vec_xor (vector bool 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)
+vec_xor (vector unsigned char a1, vector bool char a2)
{
return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
}
@@ -4998,7 +6265,7 @@ vec_xor (vector unsigned char a1, vector unsigned char a2)
/* vec_all_eq */
inline int
-vec_all_eq (vector signed char a1, vector unsigned char a2)
+vec_all_eq (vector signed char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
}
@@ -5010,7 +6277,7 @@ vec_all_eq (vector signed char a1, vector signed char a2)
}
inline int
-vec_all_eq (vector unsigned char a1, vector signed char a2)
+vec_all_eq (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
}
@@ -5022,7 +6289,25 @@ vec_all_eq (vector unsigned char a1, vector unsigned char a2)
}
inline int
-vec_all_eq (vector signed short a1, vector unsigned short a2)
+vec_all_eq (vector bool char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
+}
+
+inline int
+vec_all_eq (vector bool 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 bool 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 signed short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
}
@@ -5034,7 +6319,7 @@ vec_all_eq (vector signed short a1, vector signed short a2)
}
inline int
-vec_all_eq (vector unsigned short a1, vector signed short a2)
+vec_all_eq (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
}
@@ -5046,7 +6331,31 @@ vec_all_eq (vector unsigned short a1, vector unsigned short a2)
}
inline int
-vec_all_eq (vector signed int a1, vector unsigned int a2)
+vec_all_eq (vector bool short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
+}
+
+inline int
+vec_all_eq (vector bool 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 bool 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 pixel a1, vector pixel 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 bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
}
@@ -5058,7 +6367,7 @@ vec_all_eq (vector signed int a1, vector signed int a2)
}
inline int
-vec_all_eq (vector unsigned int a1, vector signed int a2)
+vec_all_eq (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
}
@@ -5070,6 +6379,24 @@ vec_all_eq (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_all_eq (vector bool int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
+}
+
+inline int
+vec_all_eq (vector bool 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 bool 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 float a1, vector float a2)
{
return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
@@ -5078,13 +6405,13 @@ vec_all_eq (vector float a1, vector float a2)
/* vec_all_ge */
inline int
-vec_all_ge (vector signed char a1, vector unsigned char a2)
+vec_all_ge (vector bool 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)
+vec_all_ge (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
}
@@ -5096,19 +6423,31 @@ vec_all_ge (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_all_ge (vector bool 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 char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpgtsb_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)
+vec_all_ge (vector bool 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)
+vec_all_ge (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
}
@@ -5126,13 +6465,25 @@ vec_all_ge (vector signed short a1, vector signed short a2)
}
inline int
-vec_all_ge (vector signed int a1, vector unsigned int a2)
+vec_all_ge (vector bool 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 short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
+}
+
+inline int
+vec_all_ge (vector bool 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)
+vec_all_ge (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
}
@@ -5144,6 +6495,18 @@ vec_all_ge (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_all_ge (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5158,13 +6521,13 @@ vec_all_ge (vector float a1, vector float a2)
/* vec_all_gt */
inline int
-vec_all_gt (vector signed char a1, vector unsigned char a2)
+vec_all_gt (vector bool 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)
+vec_all_gt (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
}
@@ -5176,19 +6539,31 @@ vec_all_gt (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_all_gt (vector bool 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 char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpgtsb_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)
+vec_all_gt (vector bool 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)
+vec_all_gt (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
}
@@ -5200,19 +6575,31 @@ vec_all_gt (vector unsigned short a1, vector unsigned short a2)
}
inline int
+vec_all_gt (vector bool 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 short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpgtsh_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)
+vec_all_gt (vector bool 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)
+vec_all_gt (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
}
@@ -5224,6 +6611,18 @@ vec_all_gt (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_all_gt (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5246,13 +6645,13 @@ vec_all_in (vector float a1, vector float a2)
/* vec_all_le */
inline int
-vec_all_le (vector signed char a1, vector unsigned char a2)
+vec_all_le (vector bool 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)
+vec_all_le (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
}
@@ -5264,19 +6663,31 @@ vec_all_le (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_all_le (vector bool 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 char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpgtsb_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)
+vec_all_le (vector bool 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)
+vec_all_le (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
}
@@ -5288,19 +6699,31 @@ vec_all_le (vector unsigned short a1, vector unsigned short a2)
}
inline int
+vec_all_le (vector bool 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 short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpgtsh_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)
+vec_all_le (vector bool 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)
+vec_all_le (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
}
@@ -5312,6 +6735,18 @@ vec_all_le (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_all_le (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5326,13 +6761,13 @@ vec_all_le (vector float a1, vector float a2)
/* vec_all_lt */
inline int
-vec_all_lt (vector signed char a1, vector unsigned char a2)
+vec_all_lt (vector bool 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)
+vec_all_lt (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
}
@@ -5344,19 +6779,31 @@ vec_all_lt (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_all_lt (vector bool 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 char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpgtsb_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)
+vec_all_lt (vector bool 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)
+vec_all_lt (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
}
@@ -5368,19 +6815,31 @@ vec_all_lt (vector unsigned short a1, vector unsigned short a2)
}
inline int
+vec_all_lt (vector bool 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 short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpgtsh_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)
+vec_all_lt (vector bool 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)
+vec_all_lt (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
}
@@ -5392,6 +6851,18 @@ vec_all_lt (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_all_lt (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5414,7 +6885,7 @@ vec_all_nan (vector float a1)
/* vec_all_ne */
inline int
-vec_all_ne (vector signed char a1, vector unsigned char a2)
+vec_all_ne (vector signed char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
}
@@ -5426,7 +6897,7 @@ vec_all_ne (vector signed char a1, vector signed char a2)
}
inline int
-vec_all_ne (vector unsigned char a1, vector signed char a2)
+vec_all_ne (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
}
@@ -5438,7 +6909,25 @@ vec_all_ne (vector unsigned char a1, vector unsigned char a2)
}
inline int
-vec_all_ne (vector signed short a1, vector unsigned short a2)
+vec_all_ne (vector bool char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
+}
+
+inline int
+vec_all_ne (vector bool 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 bool 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 signed short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
}
@@ -5450,7 +6939,7 @@ vec_all_ne (vector signed short a1, vector signed short a2)
}
inline int
-vec_all_ne (vector unsigned short a1, vector signed short a2)
+vec_all_ne (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
}
@@ -5462,7 +6951,25 @@ vec_all_ne (vector unsigned short a1, vector unsigned short a2)
}
inline int
-vec_all_ne (vector signed int a1, vector unsigned int a2)
+vec_all_ne (vector bool short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
+}
+
+inline int
+vec_all_ne (vector bool 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 bool 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 signed int a1, vector bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
}
@@ -5474,7 +6981,7 @@ vec_all_ne (vector signed int a1, vector signed int a2)
}
inline int
-vec_all_ne (vector unsigned int a1, vector signed int a2)
+vec_all_ne (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
}
@@ -5486,6 +6993,24 @@ vec_all_ne (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_all_ne (vector bool int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
+}
+
+inline int
+vec_all_ne (vector bool 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 bool 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 float a1, vector float a2)
{
return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
@@ -5534,7 +7059,7 @@ vec_all_numeric (vector float a1)
/* vec_any_eq */
inline int
-vec_any_eq (vector signed char a1, vector unsigned char a2)
+vec_any_eq (vector signed char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
}
@@ -5546,7 +7071,7 @@ vec_any_eq (vector signed char a1, vector signed char a2)
}
inline int
-vec_any_eq (vector unsigned char a1, vector signed char a2)
+vec_any_eq (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
}
@@ -5558,7 +7083,25 @@ vec_any_eq (vector unsigned char a1, vector unsigned char a2)
}
inline int
-vec_any_eq (vector signed short a1, vector unsigned short a2)
+vec_any_eq (vector bool char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
+}
+
+inline int
+vec_any_eq (vector bool 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 bool 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 signed short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
}
@@ -5570,7 +7113,7 @@ vec_any_eq (vector signed short a1, vector signed short a2)
}
inline int
-vec_any_eq (vector unsigned short a1, vector signed short a2)
+vec_any_eq (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
}
@@ -5582,7 +7125,31 @@ vec_any_eq (vector unsigned short a1, vector unsigned short a2)
}
inline int
-vec_any_eq (vector signed int a1, vector unsigned int a2)
+vec_any_eq (vector bool short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
+}
+
+inline int
+vec_any_eq (vector bool 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 bool 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 pixel a1, vector pixel 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 bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
}
@@ -5594,7 +7161,7 @@ vec_any_eq (vector signed int a1, vector signed int a2)
}
inline int
-vec_any_eq (vector unsigned int a1, vector signed int a2)
+vec_any_eq (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
}
@@ -5606,6 +7173,24 @@ vec_any_eq (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_any_eq (vector bool int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
+}
+
+inline int
+vec_any_eq (vector bool 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 bool 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 float a1, vector float a2)
{
return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
@@ -5614,13 +7199,13 @@ vec_any_eq (vector float a1, vector float a2)
/* vec_any_ge */
inline int
-vec_any_ge (vector signed char a1, vector unsigned char a2)
+vec_any_ge (vector signed char a1, vector bool 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)
+vec_any_ge (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
}
@@ -5638,13 +7223,31 @@ vec_any_ge (vector signed char a1, vector signed char a2)
}
inline int
-vec_any_ge (vector signed short a1, vector unsigned short a2)
+vec_any_ge (vector bool char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
+}
+
+inline int
+vec_any_ge (vector bool 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 bool 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 signed short a1, vector bool 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)
+vec_any_ge (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
}
@@ -5662,13 +7265,31 @@ vec_any_ge (vector signed short a1, vector signed short a2)
}
inline int
-vec_any_ge (vector signed int a1, vector unsigned int a2)
+vec_any_ge (vector bool short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
+}
+
+inline int
+vec_any_ge (vector bool 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 bool 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 signed int a1, vector bool 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)
+vec_any_ge (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
}
@@ -5686,6 +7307,24 @@ vec_any_ge (vector signed int a1, vector signed int a2)
}
inline int
+vec_any_ge (vector bool int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
+}
+
+inline int
+vec_any_ge (vector bool 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 bool 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 float a1, vector float a2)
{
return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
@@ -5694,13 +7333,13 @@ vec_any_ge (vector float a1, vector float a2)
/* vec_any_gt */
inline int
-vec_any_gt (vector signed char a1, vector unsigned char a2)
+vec_any_gt (vector bool 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)
+vec_any_gt (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
}
@@ -5712,19 +7351,31 @@ vec_any_gt (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_any_gt (vector bool 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 char a1, vector bool 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 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)
+vec_any_gt (vector bool 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)
+vec_any_gt (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
}
@@ -5736,19 +7387,31 @@ vec_any_gt (vector unsigned short a1, vector unsigned short a2)
}
inline int
+vec_any_gt (vector bool 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 short a1, vector bool 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 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)
+vec_any_gt (vector bool 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)
+vec_any_gt (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
}
@@ -5760,6 +7423,18 @@ vec_any_gt (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_any_gt (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5774,13 +7449,13 @@ vec_any_gt (vector float a1, vector float a2)
/* vec_any_le */
inline int
-vec_any_le (vector signed char a1, vector unsigned char a2)
+vec_any_le (vector bool 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)
+vec_any_le (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
}
@@ -5792,19 +7467,31 @@ vec_any_le (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_any_le (vector bool 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 char a1, vector bool 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 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)
+vec_any_le (vector bool 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)
+vec_any_le (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
}
@@ -5816,19 +7503,31 @@ vec_any_le (vector unsigned short a1, vector unsigned short a2)
}
inline int
+vec_any_le (vector bool 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 short a1, vector bool 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 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)
+vec_any_le (vector bool 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)
+vec_any_le (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
}
@@ -5840,6 +7539,18 @@ vec_any_le (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_any_le (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5854,13 +7565,13 @@ vec_any_le (vector float a1, vector float a2)
/* vec_any_lt */
inline int
-vec_any_lt (vector signed char a1, vector unsigned char a2)
+vec_any_lt (vector bool 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)
+vec_any_lt (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
}
@@ -5872,19 +7583,31 @@ vec_any_lt (vector unsigned char a1, vector unsigned char a2)
}
inline int
+vec_any_lt (vector bool 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 char a1, vector bool 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 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)
+vec_any_lt (vector bool 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)
+vec_any_lt (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
}
@@ -5896,19 +7619,31 @@ vec_any_lt (vector unsigned short a1, vector unsigned short a2)
}
inline int
+vec_any_lt (vector bool 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 short a1, vector bool 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 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)
+vec_any_lt (vector bool 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)
+vec_any_lt (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
}
@@ -5920,6 +7655,18 @@ vec_any_lt (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_any_lt (vector bool 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 signed int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpgtsw_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);
@@ -5942,7 +7689,7 @@ vec_any_nan (vector float a1)
/* vec_any_ne */
inline int
-vec_any_ne (vector signed char a1, vector unsigned char a2)
+vec_any_ne (vector signed char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
}
@@ -5954,7 +7701,7 @@ vec_any_ne (vector signed char a1, vector signed char a2)
}
inline int
-vec_any_ne (vector unsigned char a1, vector signed char a2)
+vec_any_ne (vector unsigned char a1, vector bool char a2)
{
return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
}
@@ -5966,7 +7713,25 @@ vec_any_ne (vector unsigned char a1, vector unsigned char a2)
}
inline int
-vec_any_ne (vector signed short a1, vector unsigned short a2)
+vec_any_ne (vector bool char a1, vector bool char a2)
+{
+ return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
+}
+
+inline int
+vec_any_ne (vector bool 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 bool 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 signed short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
}
@@ -5978,7 +7743,7 @@ vec_any_ne (vector signed short a1, vector signed short a2)
}
inline int
-vec_any_ne (vector unsigned short a1, vector signed short a2)
+vec_any_ne (vector unsigned short a1, vector bool short a2)
{
return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
}
@@ -5990,7 +7755,31 @@ vec_any_ne (vector unsigned short a1, vector unsigned short a2)
}
inline int
-vec_any_ne (vector signed int a1, vector unsigned int a2)
+vec_any_ne (vector bool short a1, vector bool short a2)
+{
+ return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
+}
+
+inline int
+vec_any_ne (vector bool 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 bool 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 pixel a1, vector pixel 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 bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
}
@@ -6002,7 +7791,7 @@ vec_any_ne (vector signed int a1, vector signed int a2)
}
inline int
-vec_any_ne (vector unsigned int a1, vector signed int a2)
+vec_any_ne (vector unsigned int a1, vector bool int a2)
{
return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
}
@@ -6014,6 +7803,24 @@ vec_any_ne (vector unsigned int a1, vector unsigned int a2)
}
inline int
+vec_any_ne (vector bool int a1, vector bool int a2)
+{
+ return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
+}
+
+inline int
+vec_any_ne (vector bool 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 bool 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 float a1, vector float a2)
{
return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
@@ -6067,64 +7874,42 @@ 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.
-};
+} /* extern "C++" */
-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;
-};
+#else /* not C++ */
-template<>
-struct __vec_step_help<vector unsigned char>
-{
- static const int _S_elem = 16;
-};
+/* "... and so I think no man in a century will suffer as greatly as
+ you will." */
-template<>
-struct __vec_step_help<vector signed char>
-{
- static const int _S_elem = 16;
-};
+/* Helper macros. */
-template<>
-struct __vec_step_help<vector float>
-{
- static const int _S_elem = 4;
-};
+#define __un_args_eq(xtype, x) \
+ __builtin_types_compatible_p (xtype, typeof (x))
-#define vec_step(t) __vec_step_help<typeof(t)>::_S_elem
+#define __bin_args_eq(xtype, x, ytype, y) \
+ (__builtin_types_compatible_p (xtype, typeof (x)) \
+ && __builtin_types_compatible_p (ytype, typeof (y)))
-}//extern "C++"
+#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)))
-#else /* not C++ */
+#define __ch(x, y, z) __builtin_choose_expr (x, y, z)
-/* "... and so I think no man in a century will suffer as greatly as
- you will." */
+#define vec_step(t) \
+ __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector bool int), 4, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector bool short), 8, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector pixel), 8, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector bool char), 16, \
+ __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \
+ __builtin_altivec_compiletime_error ("vec_step"))))))))))))
#define vec_abs(a) \
__ch (__un_args_eq (vector signed char, (a)), \
@@ -6135,7 +7920,7 @@ struct __vec_step_help<vector float>
((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 ()))))
+ __builtin_altivec_compiletime_error ("vec_abs")))))
#define vec_abss(a) \
__ch (__un_args_eq (vector signed char, (a)), \
@@ -6144,17 +7929,7 @@ struct __vec_step_help<vector float>
((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 (typeof (t), vector signed int), 4, \
- __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \
- __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \
- __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \
- __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \
- __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \
- __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \
- __altivec_link_error_invalid_argument ())))))))
+ __builtin_altivec_compiletime_error ("vec_abss"))))
#define vec_vaddubm(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
@@ -6165,7 +7940,7 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ()))))
+ __builtin_altivec_compiletime_error ("vec_vaddubm")))))
#define vec_vadduhm(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
@@ -6176,7 +7951,7 @@ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ()))))
+ __builtin_altivec_compiletime_error ("vec_vadduhm")))))
#define vec_vadduwm(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
@@ -6187,78 +7962,102 @@ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ()))))
+ __builtin_altivec_compiletime_error ("vec_vadduwm")))))
#define vec_vaddfp(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vaddfp"))
#define vec_add(a1, a2) \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_add"))))))))))))))))))))
#define vec_addc(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_addc"))
#define vec_adds(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ ((vector signed char) __builtin_altivec_vaddsbs ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ ((vector signed short) __builtin_altivec_vaddshs ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), vector bool int, (a2)), \
+ ((vector signed int) __builtin_altivec_vaddsws ((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 ()))))))))))))
+ __builtin_altivec_compiletime_error ("vec_adds")))))))))))))))))))
#define vec_vaddsws(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vaddsws"))
#define vec_vadduws(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
@@ -6267,12 +8066,12 @@ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())))
+ __builtin_altivec_compiletime_error ("vec_vadduws"))))
#define vec_vaddshs(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vaddshs"))
#define vec_vadduhs(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
@@ -6281,12 +8080,12 @@ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ())))
+ __builtin_altivec_compiletime_error ("vec_vadduhs"))))
#define vec_vaddsbs(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vaddsbs"))
#define vec_vaddubs(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -6295,89 +8094,109 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ())))
+ __builtin_altivec_compiletime_error ("vec_vaddubs"))))
#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)), \
+__ch (__bin_args_eq (vector float, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool int, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool char, (a1), vector bool char, (a2)), \
+ ((vector bool char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 ())))))))))))))))
+ __builtin_altivec_compiletime_error ("vec_and")))))))))))))))))))))))))
#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 unsigned int, (a2)), \
+__ch (__bin_args_eq (vector float, (a1), vector bool int, (a2)), \
((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
-__ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \
+__ch (__bin_args_eq (vector bool 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 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 unsigned int, (a2)), \
- ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed int, (a2)), \
((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
-__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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 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)), \
+__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \
+ ((vector bool short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 unsigned 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 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)), \
+__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \
+ ((vector bool char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 signed char, (a2)), \
+__ch (__bin_args_eq (vector signed char, (a1), vector bool char, (a2)), \
((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
-__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (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))), \
- __altivec_link_error_invalid_argument ())))))))))))))))))))))))
+__ch (__bin_args_eq (vector bool 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 bool 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))), \
+ __builtin_altivec_compiletime_error ("vec_andc")))))))))))))))))))))))))
#define vec_avg(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
@@ -6392,390 +8211,453 @@ __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 ()))))))
+ __builtin_altivec_compiletime_error ("vec_avg")))))))
#define vec_vavgsw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vavgsw"))
#define vec_vavguw(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vavguw"))
#define vec_vavgsh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vavgsh"))
#define vec_vavguh(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vavguh"))
#define vec_vavgsb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vavgsb"))
#define vec_vavgub(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vavgub"))
-#define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
+#define vec_ceil(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vrfip ((vector float) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_ceil"))
-#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
+#define vec_cmpb(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpbfp ((vector float) (a1), (vector float) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_cmpb"))
#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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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 ())))))))
+ ((vector bool int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_cmpeq"))))))))
#define vec_vcmpeqfp(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vcmpeqfp"))
#define vec_vcmpequw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ()))
+ __builtin_altivec_compiletime_error ("vec_vcmpequw")))
#define vec_vcmpequh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ()))
+ __builtin_altivec_compiletime_error ("vec_vcmpequh")))
#define vec_vcmpequb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ()))
+ __builtin_altivec_compiletime_error ("vec_vcmpequb")))
-#define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
+#define vec_cmpge(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector bool int) __builtin_altivec_vcmpgefp ((vector float) (a1), (vector float) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_cmpge"))
#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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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 ())))))))
+ ((vector bool int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_cmpgt"))))))))
#define vec_vcmpgtfp(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vcmpgtfp"))
#define vec_vcmpgtsw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_abs"))
#define vec_vcmpgtuw(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_abs"))
#define vec_vcmpgtsh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vcmpgtsh"))
#define vec_vcmpgtuh(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vcmpgtuh"))
#define vec_vcmpgtsb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vcmpgtsb"))
#define vec_vcmpgtub(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_vcmpgtub"))
-#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a2), (a1))
+#define vec_cmple(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector bool int) __builtin_altivec_vcmpgefp ((vector float) (a2), (vector float) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_cmple"))
#define vec_cmplt(a2, a1) \
__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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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))), \
+ ((vector bool 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 ())))))))
+ ((vector bool int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_cmplt"))))))))
#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))), \
-__ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
- ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
-__ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
- ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
- __altivec_link_error_invalid_argument ()))))
+__ch (__bin_args_eq (vector unsigned int, (a1), const int, (a2)), \
+ ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), const int, (a2)), \
+ ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_ctf")))
#define vec_vcfsx(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
- ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
+ ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const int) (a2))), \
__ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
- ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
- __altivec_link_error_invalid_argument ()))
+ ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_vcfsx")))
#define vec_vcfux(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
- ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
+ ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
- ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
- __altivec_link_error_invalid_argument ()))
+ ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_vcfux")))
-#define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
+#define vec_cts(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), const int, (a2)), \
+ ((vector signed int) __builtin_altivec_vctsxs ((vector float) (a1), (const int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_cts"))
-#define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2))
+#define vec_ctu(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), const int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vctuxs ((vector float) (a1), (const int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_ctu"))
-#define vec_dss(a1) __builtin_altivec_dss ((a1))
+#define vec_dss(a1) \
+__ch (__un_args_eq (const int, (a1)), \
+ __builtin_altivec_dss ((const int) (a1)), \
+ __builtin_altivec_compiletime_error ("vec_dss"))
#define vec_dssall() __builtin_altivec_dssall ()
#define vec_dst(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector signed char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector bool char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
+__ch (__tern_args_eq (const vector signed short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
+__ch (__tern_args_eq (const vector bool short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
+__ch (__tern_args_eq (const vector pixel, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
+__ch (__tern_args_eq (const vector signed int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
+__ch (__tern_args_eq (const vector bool int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector float, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
+__ch (__tern_args_eq (const unsigned char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
+__ch (__tern_args_eq (const signed char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
+__ch (__tern_args_eq (const unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
+__ch (__tern_args_eq (const short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
+__ch (__tern_args_eq (const unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
+__ch (__tern_args_eq (const int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
+__ch (__tern_args_eq (const unsigned long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
+__ch (__tern_args_eq (const long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
- __altivec_link_error_invalid_argument ()))))))))))))))))
+__ch (__tern_args_eq (const float, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
+ __builtin_altivec_compiletime_error ("vec_dst")))))))))))))))))))))
#define vec_dstst(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector signed char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector bool char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
+__ch (__tern_args_eq (const vector signed short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
+__ch (__tern_args_eq (const vector bool short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
+__ch (__tern_args_eq (const vector pixel, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
+__ch (__tern_args_eq (const vector signed int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
+__ch (__tern_args_eq (const vector bool int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector float, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
+__ch (__tern_args_eq (const unsigned char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
+__ch (__tern_args_eq (const signed char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
+__ch (__tern_args_eq (const unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
+__ch (__tern_args_eq (const short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
+__ch (__tern_args_eq (const unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
+__ch (__tern_args_eq (const int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
+__ch (__tern_args_eq (const unsigned long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
+__ch (__tern_args_eq (const long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
- __altivec_link_error_invalid_argument ()))))))))))))))))
+__ch (__tern_args_eq (const float, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
+ __builtin_altivec_compiletime_error ("vec_dstst")))))))))))))))))))))
#define vec_dststt(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector signed char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector bool char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
+__ch (__tern_args_eq (const vector signed short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
+__ch (__tern_args_eq (const vector bool short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
+__ch (__tern_args_eq (const vector pixel, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
+__ch (__tern_args_eq (const vector signed int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
+__ch (__tern_args_eq (const vector bool int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector float, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
+__ch (__tern_args_eq (const unsigned char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
+__ch (__tern_args_eq (const signed char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
+__ch (__tern_args_eq (const unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
+__ch (__tern_args_eq (const short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
+__ch (__tern_args_eq (const unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
+__ch (__tern_args_eq (const int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
+__ch (__tern_args_eq (const unsigned long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
+__ch (__tern_args_eq (const long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
- __altivec_link_error_invalid_argument ()))))))))))))))))
+__ch (__tern_args_eq (const float, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
+ __builtin_altivec_compiletime_error ("vec_dststt")))))))))))))))))))))
#define vec_dstt(a1, a2, a3) \
-__ch (__un_args_eq (vector unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector signed char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector bool char, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
+__ch (__tern_args_eq (const vector unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed char, *(a1)), \
+__ch (__tern_args_eq (const vector signed short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned short, *(a1)), \
+__ch (__tern_args_eq (const vector bool short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed short, *(a1)), \
+__ch (__tern_args_eq (const vector pixel, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector unsigned int, *(a1)), \
+__ch (__tern_args_eq (const vector unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector signed int, *(a1)), \
+__ch (__tern_args_eq (const vector signed int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (vector float, *(a1)), \
+__ch (__tern_args_eq (const vector bool int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned char, *(a1)), \
+__ch (__tern_args_eq (const vector float, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed char, *(a1)), \
+__ch (__tern_args_eq (const unsigned char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned short, *(a1)), \
+__ch (__tern_args_eq (const signed char, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed short, *(a1)), \
+__ch (__tern_args_eq (const unsigned short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned int, *(a1)), \
+__ch (__tern_args_eq (const short, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed int, *(a1)), \
+__ch (__tern_args_eq (const unsigned int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (unsigned long, *(a1)), \
+__ch (__tern_args_eq (const int, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (signed long, *(a1)), \
+__ch (__tern_args_eq (const unsigned long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
-__ch (__un_args_eq (float, *(a1)), \
+__ch (__tern_args_eq (const long, *(a1), int, (a2), const int, (a3)), \
__builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
- __altivec_link_error_invalid_argument ()))))))))))))))))
+__ch (__tern_args_eq (const float, *(a1), int, (a2), const int, (a3)), \
+ __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
+ __builtin_altivec_compiletime_error ("vec_dstt")))))))))))))))))))))
-#define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
+#define vec_expte(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vexptefp ((vector float) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_expte"))
-#define vec_floor(a1) __builtin_altivec_vrfim (a1)
+#define vec_floor(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vrfim ((vector float) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_floor"))
#define vec_ld(a, b) \
-__ch (__un_args_eq (vector unsigned char, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector unsigned char, *(b)), \
((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (unsigned char, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned char, *(b)), \
((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (vector signed char, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector signed char, *(b)), \
((vector signed char) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (signed char, *(b)), \
+__ch (__bin_args_eq (int, (a), const signed char, *(b)), \
((vector signed char) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (vector unsigned short, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector bool char, *(b)), \
+ ((vector bool char) __builtin_altivec_lvx ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector unsigned short, *(b)), \
((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (unsigned short, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned short, *(b)), \
((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (vector signed short, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector signed short, *(b)), \
((vector signed short) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (signed short, *(b)), \
+__ch (__bin_args_eq (int, (a), const short, *(b)), \
((vector signed short) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (vector unsigned int, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector bool short, *(b)), \
+ ((vector bool short) __builtin_altivec_lvx ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector pixel, *(b)), \
+ ((vector pixel) __builtin_altivec_lvx ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector unsigned int, *(b)), \
((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (unsigned int, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned int, *(b)), \
((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (unsigned long, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned long, *(b)), \
((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (vector signed int, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector signed int, *(b)), \
((vector signed int) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (signed int, *(b)), \
+__ch (__bin_args_eq (int, (a), const int, *(b)), \
((vector signed int) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (signed long, *(b)), \
+__ch (__bin_args_eq (int, (a), const long, *(b)), \
((vector signed int) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (vector float, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector bool int, *(b)), \
+ ((vector bool int) __builtin_altivec_lvx ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector float, *(b)), \
((vector float) __builtin_altivec_lvx ((a), (b))), \
-__ch (__un_args_eq (float, *(b)), \
+__ch (__bin_args_eq (int, (a), const float, *(b)), \
((vector float) __builtin_altivec_lvx ((a), (b))), \
-__altivec_link_error_invalid_argument ()))))))))))))))))
+__builtin_altivec_compiletime_error ("vec_ld")))))))))))))))))))))
#define vec_lde(a, b) \
-__ch (__un_args_eq (unsigned char, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned char, *(b)), \
((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
-__ch (__un_args_eq (signed char, *(b)), \
+__ch (__bin_args_eq (int, (a), const signed char, *(b)), \
((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
-__ch (__un_args_eq (unsigned short, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned short, *(b)), \
((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
-__ch (__un_args_eq (signed short, *(b)), \
+__ch (__bin_args_eq (int, (a), const short, *(b)), \
((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
-__ch (__un_args_eq (unsigned long, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned long, *(b)), \
((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (signed long, *(b)), \
+__ch (__bin_args_eq (int, (a), const long, *(b)), \
((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (unsigned int, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned int, *(b)), \
((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (signed int, *(b)), \
+__ch (__bin_args_eq (int, (a), const int, *(b)), \
((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
-__ch (__un_args_eq (float, *(b)), \
+__ch (__bin_args_eq (int, (a), const float, *(b)), \
((vector float) __builtin_altivec_lvewx ((a), (b))), \
-__altivec_link_error_invalid_argument ())))))))))
+__builtin_altivec_compiletime_error ("vec_lde"))))))))))
#define vec_lvewx(a, b) \
__ch (__un_args_eq (unsigned int, *(b)), \
@@ -6788,143 +8670,172 @@ __ch (__un_args_eq (signed long, *(b)), \
((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (float, *(b)), \
((vector float) __builtin_altivec_lvewx ((a), (b))), \
-__altivec_link_error_invalid_argument ())))))
+__builtin_altivec_compiletime_error ("vec_lvewx"))))))
#define vec_lvehx(a, b) \
__ch (__un_args_eq (unsigned short, *(b)), \
((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
__ch (__un_args_eq (signed short, *(b)), \
((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_lvehx")))
#define vec_lvebx(a, b) \
__ch (__un_args_eq (unsigned char, *(b)), \
((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
__ch (__un_args_eq (signed char, *(b)), \
((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_lvebx")))
#define vec_ldl(a, b) \
-__ch (__un_args_eq (vector unsigned char, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector unsigned char, *(b)), \
((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (unsigned char, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned char, *(b)), \
((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (vector signed char, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector signed char, *(b)), \
((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (signed char, *(b)), \
+__ch (__bin_args_eq (int, (a), const signed char, *(b)), \
((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (vector unsigned short, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector bool char, *(b)), \
+ ((vector bool char) __builtin_altivec_lvxl ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector unsigned short, *(b)), \
((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (unsigned short, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned short, *(b)), \
((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (vector signed short, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector signed short, *(b)), \
((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (signed short, *(b)), \
+__ch (__bin_args_eq (int, (a), const short, *(b)), \
((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (vector unsigned int, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector bool short, *(b)), \
+ ((vector bool short) __builtin_altivec_lvxl ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector pixel, *(b)), \
+ ((vector pixel) __builtin_altivec_lvxl ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector unsigned int, *(b)), \
((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (unsigned int, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned int, *(b)), \
((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (unsigned long, *(b)), \
+__ch (__bin_args_eq (int, (a), const unsigned long, *(b)), \
((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (vector signed int, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector signed int, *(b)), \
((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (signed int, *(b)), \
+__ch (__bin_args_eq (int, (a), const int, *(b)), \
((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (signed long, *(b)), \
+__ch (__bin_args_eq (int, (a), const long, *(b)), \
((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (vector float, *(b)), \
+__ch (__bin_args_eq (int, (a), const vector bool int, *(b)), \
+ ((vector bool int) __builtin_altivec_lvxl ((a), (b))), \
+__ch (__bin_args_eq (int, (a), const vector float, *(b)), \
((vector float) __builtin_altivec_lvxl ((a), (b))), \
-__ch (__un_args_eq (float, *(b)), \
+__ch (__bin_args_eq (int, (a), const float, *(b)), \
((vector float) __builtin_altivec_lvxl ((a), (b))), \
-__altivec_link_error_invalid_argument ()))))))))))))))))
+__builtin_altivec_compiletime_error ("vec_ldl")))))))))))))))))))))
-#define vec_loge(a1) __builtin_altivec_vlogefp ((a1))
+#define vec_loge(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vlogefp ((vector float) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_loge"))
#define vec_lvsl(a1, a2) \
-__ch (__un_args_eq (unsigned char, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned char, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed char, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed char, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (unsigned short, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned short, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed short, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed short, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (unsigned int, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned int, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed int, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed int, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (unsigned long, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned long, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed long, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed long, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__ch (__un_args_eq (float, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile float, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
-__altivec_link_error_invalid_argument ())))))))))
+__builtin_altivec_compiletime_error ("vec_lvsl"))))))))))
#define vec_lvsr(a1, a2) \
-__ch (__un_args_eq (unsigned char, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned char, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed char, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed char, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (unsigned short, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned short, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed short, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed short, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (unsigned int, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned int, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed int, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed int, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (unsigned long, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile unsigned long, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (signed long, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile signed long, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__ch (__un_args_eq (float, *(a2)), \
+__ch (__bin_args_eq (int, (a1), const volatile float, *(a2)), \
((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
-__altivec_link_error_invalid_argument ())))))))))
+__builtin_altivec_compiletime_error ("vec_lvsr"))))))))))
-#define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
+#define vec_madd(a1, a2, a3) \
+__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector float, (a3)), \
+ ((vector float) __builtin_altivec_vmaddfp ((a1), (a2), (a3))), \
+__builtin_altivec_compiletime_error ("vec_madd"))
-#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
+#define vec_madds(a1, a2, a3) \
+__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
+ ((vector signed short) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))), \
+__builtin_altivec_compiletime_error ("vec_madds"))
#define vec_max(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ ((vector signed char) __builtin_altivec_vmaxsb ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ ((vector signed short) __builtin_altivec_vmaxsh ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ ((vector signed int) __builtin_altivec_vmaxsw ((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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_max"))))))))))))))))))))
#define vec_vmaxfp(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmaxfp"))
#define vec_vmaxsw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmaxsw"))
#define vec_vmaxuw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
@@ -6933,12 +8844,12 @@ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vmaxuw"))))
#define vec_vmaxsh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmaxsh"))
#define vec_vmaxuh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
@@ -6947,12 +8858,12 @@ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vmaxuh"))))
#define vec_vmaxsb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmaxsb"))
#define vec_vmaxub(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -6961,24 +8872,32 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vmaxub"))))
#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 bool char, (a1), vector bool char, (a2)), \
+ ((vector bool 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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \
+ ((vector pixel) __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 ())))))))
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_mergeh")))))))))))
#define vec_vmrghw(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
@@ -6987,38 +8906,46 @@ __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 ())))
+__builtin_altivec_compiletime_error ("vec_vmrghw"))))
#define vec_vmrghh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vmrghh")))
#define vec_vmrghb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vmrghb")))
#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 bool char, (a1), vector bool char, (a2)), \
+ ((vector bool 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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \
+ ((vector pixel) __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 ())))))))
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_mergel"))))))))
#define vec_vmrglw(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
@@ -7027,62 +8954,74 @@ __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 ())))
+__builtin_altivec_compiletime_error ("vec_vmrglw"))))
#define vec_vmrglh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vmrglh")))
#define vec_vmrglb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vmrglb")))
#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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ ((vector signed char) __builtin_altivec_vminsb ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ ((vector signed short) __builtin_altivec_vminsh ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ ((vector signed int) __builtin_altivec_vminsw ((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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_min"))))))))))))))))))))
#define vec_vminfp(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vminfp"))
#define vec_vminsw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vminsw"))
#define vec_vminuw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
@@ -7091,12 +9030,12 @@ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vminuw"))))
#define vec_vminsh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vminsh"))
#define vec_vminuh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
@@ -7105,12 +9044,12 @@ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vminuh"))))
#define vec_vminsb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_abs"))
#define vec_vminub(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -7119,7 +9058,7 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vminub"))))
#define vec_mladd(a1, a2, a3) \
__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
@@ -7130,9 +9069,12 @@ __ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), ve
((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 ()))))
+ __builtin_altivec_compiletime_error ("vec_mladd")))))
-#define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))
+#define vec_mradds(a1, a2, a3) \
+__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
+ ((vector signed short) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))), \
+__builtin_altivec_compiletime_error ("vec_mradds"))
#define vec_msum(a1, a2, a3) \
__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
@@ -7143,59 +9085,67 @@ __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2),
((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 ()))))
+ __builtin_altivec_compiletime_error ("vec_msum")))))
#define vec_vmsumshm(a1, a2, a3) \
__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmsumshm"))
#define vec_vmsumuhm(a1, a2, a3) \
__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmsumuhm"))
#define vec_vmsummbm(a1, a2, a3) \
__ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_abs"))
#define vec_vmsumubm(a1, a2, a3) \
__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmsummbm"))
#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 ()))
+ __builtin_altivec_compiletime_error ("vec_msums")))
#define vec_vmsumshs(a1, a2, a3) \
__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmsumshs"))
#define vec_vmsumuhs(a1, a2, a3) \
__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmsumuhs"))
#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 bool 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 bool short, (a1)), \
+ __builtin_altivec_mtvscr ((vector signed int) (a1)), \
+__ch (__un_args_eq (vector pixel, (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 ()))))))
+__ch (__un_args_eq (vector bool char, (a1)), \
+ __builtin_altivec_mtvscr ((vector signed int) (a1)), \
+ __builtin_altivec_compiletime_error ("vec_mtvscr")))))))))))
#define vec_mule(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
@@ -7206,27 +9156,27 @@ __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 ()))))
+ __builtin_altivec_compiletime_error ("vec_mule")))))
#define vec_vmulesh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmulesh"))
#define vec_vmuleuh(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmuleuh"))
#define vec_vmulesb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmulesb"))
#define vec_vmuleub(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmuleub"))
#define vec_mulo(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
@@ -7237,32 +9187,32 @@ __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 ()))))
+ __builtin_altivec_compiletime_error ("vec_mulo")))))
#define vec_vmulosh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmulosh"))
#define vec_vmulouh(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmulouh"))
#define vec_vmulosb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmulosb"))
#define vec_vmuloub(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vmuloub"))
#define vec_nmsub(a1, a2, a3) \
__ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
- __altivec_link_error_invalid_argument ())
+ __builtin_altivec_compiletime_error ("vec_nmsub"))
#define vec_nor(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
@@ -7271,78 +9221,106 @@ __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 bool int, (a1), vector bool int, (a2)), \
+ ((vector bool 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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool 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 ())))))))
+__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \
+ ((vector bool char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_nor")))))))))))
#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)), \
+__ch (__bin_args_eq (vector float, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool int, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool char, (a1), vector bool char, (a2)), \
+ ((vector bool char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 ())))))))))))))))
+ __builtin_altivec_compiletime_error ("vec_or")))))))))))))))))))))))))
#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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool 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 ()))))
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_pack")))))))
#define vec_vpkuwum(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vpkuwum")))
#define vec_vpkuhum(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vpkuhum")))
#define vec_packpx(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
- (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \
-__altivec_link_error_invalid_argument ())
+ (vector pixel) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \
+__builtin_altivec_compiletime_error ("vec_packpx"))
#define vec_packs(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
@@ -7353,27 +9331,27 @@ __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 ()))))
+ __builtin_altivec_compiletime_error ("vec_packs")))))
#define vec_vpkswss(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vpkswss"))
#define vec_vpkuwus(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vpkuwus"))
#define vec_vpkshss(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vpkshss"))
#define vec_vpkuhus(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vpkuhus"))
#define vec_packsu(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
@@ -7384,17 +9362,17 @@ __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 ()))))
+ __builtin_altivec_compiletime_error ("vec_packsu")))))
#define vec_vpkswus(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vpkswus"))
#define vec_vpkshus(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vpkshus"))
#define vec_perm(a1, a2, a3) \
__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
@@ -7403,17 +9381,28 @@ __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector u
((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 bool int, (a1), vector bool int, (a2), vector unsigned char, (a3)), \
+ ((vector bool 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 bool short, (a1), vector bool short, (a2), vector unsigned char, (a3)), \
+ ((vector bool short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
+__ch (__tern_args_eq (vector pixel, (a1), vector pixel, (a2), vector unsigned char, (a3)), \
+ ((vector pixel) __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 ())))))))
+__ch (__tern_args_eq (vector bool char, (a1), vector bool char, (a2), vector unsigned char, (a3)), \
+ ((vector bool char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
+ __builtin_altivec_compiletime_error ("vec_perm"))))))))))))
-#define vec_re(a1) __builtin_altivec_vrefp ((a1))
+#define vec_re(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vrefp ((vector float) (a1))), \
+__builtin_altivec_compiletime_error ("vec_re"))
#define vec_rl(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -7428,63 +9417,81 @@ __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 ()))))))
+ __builtin_altivec_compiletime_error ("vec_rl")))))))
#define vec_vrlw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vrlw")))
#define vec_vrlh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vrlh")))
#define vec_vrlb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vrlb")))
-#define vec_round(a1) __builtin_altivec_vrfin ((a1))
+#define vec_round(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vrfin ((vector float) (a1))), \
+__builtin_altivec_compiletime_error ("vec_round"))
-#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
+#define vec_rsqrte(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vrsqrtefp ((vector float) (a1))), \
+__builtin_altivec_compiletime_error ("vec_rsqrte"))
#define vec_sel(a1, a2, a3) \
-__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \
+__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector bool 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)), \
+__ch (__tern_args_eq (vector bool int, (a1), vector bool int, (a2), vector bool int, (a3)), \
+ ((vector bool int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
+__ch (__tern_args_eq (vector bool int, (a1), vector bool int, (a2), vector unsigned int, (a3)), \
+ ((vector bool 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 bool 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)), \
+__ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector bool 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)), \
+__ch (__tern_args_eq (vector bool short, (a1), vector bool short, (a2), vector bool short, (a3)), \
+ ((vector bool short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
+__ch (__tern_args_eq (vector bool short, (a1), vector bool short, (a2), vector unsigned short, (a3)), \
+ ((vector bool 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 bool 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)), \
+__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector bool 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)), \
+__ch (__tern_args_eq (vector bool char, (a1), vector bool char, (a2), vector bool char, (a3)), \
+ ((vector bool char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
+__ch (__tern_args_eq (vector bool char, (a1), vector bool char, (a2), vector unsigned char, (a3)), \
+ ((vector bool 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 bool 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)), \
+__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector bool 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 ()))))))))))))))
+ __builtin_altivec_compiletime_error ("vec_sel")))))))))))))))))))))
#define vec_sl(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -7499,59 +9506,47 @@ __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 ()))))))
+ __builtin_altivec_compiletime_error ("vec_sl")))))))
#define vec_vslw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vslw")))
#define vec_vslh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vslh")))
#define vec_vslb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vslb")))
#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 float, (a1), vector float, (a2), unsigned int, (a3)), \
- ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
+ ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (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 signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \
- ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
+ ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (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 unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \
- ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
+ ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (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 signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \
- ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
+ ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (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 unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \
- ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
+ ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (a3))), \
+__ch (__tern_args_eq (vector pixel, (a1), vector pixel, (a2), int, (a3)), \
+ ((vector pixel) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (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 signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \
- ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
+ ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (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))), \
-__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned 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 ()))))))))))))))
+ ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const int) (a3))), \
+ __builtin_altivec_compiletime_error ("vec_sld")))))))))
#define vec_sll(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
@@ -7566,6 +9561,12 @@ __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 bool int, (a1), vector unsigned int, (a2)), \
+ ((vector bool int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector unsigned short, (a2)), \
+ ((vector bool int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector unsigned char, (a2)), \
+ ((vector bool 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)), \
@@ -7578,6 +9579,18 @@ __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 bool short, (a1), vector unsigned int, (a2)), \
+ ((vector bool short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool short, (a1), vector unsigned short, (a2)), \
+ ((vector bool short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool short, (a1), vector unsigned char, (a2)), \
+ ((vector bool short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned int, (a2)), \
+ ((vector pixel) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned short, (a2)), \
+ ((vector pixel) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned char, (a2)), \
+ ((vector pixel) __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)), \
@@ -7590,7 +9603,13 @@ __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 ()))))))))))))))))))
+__ch (__bin_args_eq (vector bool char, (a1), vector unsigned int, (a2)), \
+ ((vector bool char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool char, (a1), vector unsigned short, (a2)), \
+ ((vector bool char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool char, (a1), vector unsigned char, (a2)), \
+ ((vector bool char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_sll")))))))))))))))))))))))))))))))
#define vec_slo(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
@@ -7613,6 +9632,10 @@ __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 pixel, (a1), vector signed char, (a2)), \
+ ((vector pixel) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned char, (a2)), \
+ ((vector pixel) __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)), \
@@ -7621,87 +9644,99 @@ __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 ()))))))))))))))
+ __builtin_altivec_compiletime_error ("vec_slo")))))))))))))))))
#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 signed char, ((a1)), unsigned int, ((a2))), \
- ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((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 unsigned char, ((a1)), unsigned int, ((a2))), \
- ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((a2)))), \
+__ch (__bin_args_eq (vector bool char, ((a1)), int, ((a2))), \
+ ((vector bool char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((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 signed short, ((a1)), unsigned int, ((a2))), \
- ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((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 unsigned short, ((a1)), unsigned int, ((a2))), \
- ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((a2)))), \
+__ch (__bin_args_eq (vector bool short, ((a1)), int, ((a2))), \
+ ((vector bool short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((a2)))), \
+__ch (__bin_args_eq (vector pixel, ((a1)), int, ((a2))), \
+ ((vector pixel) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((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 float, ((a1)), unsigned int, ((a2))), \
- ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const int) ((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 signed int, ((a1)), unsigned int, ((a2))), \
- ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
- ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
-__ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
- ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
- __altivec_link_error_invalid_argument ()))))))))))))))
+ ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) ((a2)))), \
+__ch (__bin_args_eq (vector bool int, ((a1)), int, ((a2))), \
+ ((vector bool int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) ((a2)))), \
+ __builtin_altivec_compiletime_error ("vec_splat"))))))))))))
#define vec_vspltw(a1, a2) \
__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
- ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
- ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
- ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
- ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+ ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
- ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
+ ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
- ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
-__altivec_link_error_invalid_argument ()))))))
+ ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) ((a2)))), \
+__builtin_altivec_compiletime_error ("vec_vspltw")))))))
#define vec_vsplth(a1, a2) \
__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
- ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
- ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
- ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+ ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
- ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
-__altivec_link_error_invalid_argument ()))))
+ ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const int) ((a2)))), \
+__builtin_altivec_compiletime_error ("vec_vsplth")))))
#define vec_vspltb(a1, a2) \
__ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
- ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
- ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
- ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+ ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((a2)))), \
__ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
- ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
-__altivec_link_error_invalid_argument ()))))
-
-#define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
-
-#define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
-
-#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)))
+ ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const int) ((a2)))), \
+__builtin_altivec_compiletime_error ("vec_vspltb")))))
+
+#define vec_splat_s8(a1) \
+__ch (__un_args_eq (int, (a1)), \
+ ((vector signed char) __builtin_altivec_vspltisb ((a1))), \
+__builtin_altivec_compiletime_error ("vec_splat_s8"))
+
+#define vec_splat_s16(a1) \
+__ch (__un_args_eq (int, (a1)), \
+ ((vector signed short) __builtin_altivec_vspltish ((a1))), \
+__builtin_altivec_compiletime_error ("vec_splat_s16"))
+
+#define vec_splat_s32(a1) \
+__ch (__un_args_eq (int, (a1)), \
+ ((vector signed int) __builtin_altivec_vspltisw ((a1))), \
+__builtin_altivec_compiletime_error ("vec_splat_s32"))
+
+#define vec_splat_u8(a1) \
+__ch (__un_args_eq (int, (a1)), \
+ ((vector unsigned char) __builtin_altivec_vspltisb ((a1))), \
+__builtin_altivec_compiletime_error ("vec_splat_u8"))
+
+#define vec_splat_u16(a1) \
+__ch (__un_args_eq (int, (a1)), \
+ ((vector unsigned short) __builtin_altivec_vspltish ((a1))), \
+__builtin_altivec_compiletime_error ("vec_splat_u16"))
+
+#define vec_splat_u32(a1) \
+__ch (__un_args_eq (int, (a1)), \
+ ((vector unsigned int) __builtin_altivec_vspltisw ((a1))), \
+__builtin_altivec_compiletime_error ("vec_splat_u32"))
#define vec_sr(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -7716,28 +9751,28 @@ __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 ()))))))
+ __builtin_altivec_compiletime_error ("vec_sr")))))))
#define vec_vsrw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vsrw")))
#define vec_vsrh(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vsrh")))
#define vec_vsrb(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vsrb")))
#define vec_sra(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -7752,28 +9787,28 @@ __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 ()))))))
+ __builtin_altivec_compiletime_error ("vec_sra")))))))
#define vec_vsraw(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vsraw")))
#define vec_vsrah(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vsrah")))
#define vec_vsrab(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_vsrab")))
#define vec_srl(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
@@ -7788,6 +9823,12 @@ __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 bool int, (a1), vector unsigned int, (a2)), \
+ ((vector bool int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector unsigned short, (a2)), \
+ ((vector bool int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector unsigned char, (a2)), \
+ ((vector bool 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)), \
@@ -7800,6 +9841,18 @@ __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 bool short, (a1), vector unsigned int, (a2)), \
+ ((vector bool short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool short, (a1), vector unsigned short, (a2)), \
+ ((vector bool short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool short, (a1), vector unsigned char, (a2)), \
+ ((vector bool short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned int, (a2)), \
+ ((vector pixel) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned short, (a2)), \
+ ((vector pixel) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned char, (a2)), \
+ ((vector pixel) __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)), \
@@ -7812,7 +9865,13 @@ __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 ()))))))))))))))))))
+__ch (__bin_args_eq (vector bool char, (a1), vector unsigned int, (a2)), \
+ ((vector bool char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool char, (a1), vector unsigned short, (a2)), \
+ ((vector bool char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool char, (a1), vector unsigned char, (a2)), \
+ ((vector bool char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
+ __builtin_altivec_compiletime_error ("vec_srl")))))))))))))))))))))))))))))))
#define vec_sro(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
@@ -7831,6 +9890,10 @@ __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 pixel, (a1), vector signed char, (a2)), \
+ ((vector pixel) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector pixel, (a1), vector unsigned char, (a2)), \
+ ((vector pixel) __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)), \
@@ -7843,30 +9906,150 @@ __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 ()))))))))))))))
+ __builtin_altivec_compiletime_error ("vec_sro")))))))))))))))))
#define vec_st(a1, a2, a3) \
- __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
+__ch (__tern_args_eq (vector unsigned char, (a1), int, (a2), vector unsigned char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned char, (a1), int, (a2), unsigned char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed char, (a1), int, (a2), vector signed char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed char, (a1), int, (a2), signed char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool char, (a1), int, (a2), vector bool char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool char, (a1), int, (a2), unsigned char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool char, (a1), int, (a2), signed char, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned short, (a1), int, (a2), vector unsigned short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned short, (a1), int, (a2), unsigned short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed short, (a1), int, (a2), vector signed short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed short, (a1), int, (a2), short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool short, (a1), int, (a2), vector bool short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool short, (a1), int, (a2), unsigned short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool short, (a1), int, (a2), short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector pixel, (a1), int, (a2), vector pixel, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector pixel, (a1), int, (a2), unsigned short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector pixel, (a1), int, (a2), short, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned int, (a1), int, (a2), vector unsigned int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned int, (a1), int, (a2), unsigned int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed int, (a1), int, (a2), vector signed int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed int, (a1), int, (a2), int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool int, (a1), int, (a2), vector bool int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool int, (a1), int, (a2), unsigned int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool int, (a1), int, (a2), int, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector float, (a1), int, (a2), vector float, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector float, (a1), int, (a2), float, *(a3)), \
+ __builtin_altivec_stvx ((vector signed int) (a1), (a2), (void *) (a3)), \
+__builtin_altivec_compiletime_error ("vec_st")))))))))))))))))))))))))))
#define vec_stl(a1, a2, a3) \
- __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
+__ch (__tern_args_eq (vector unsigned char, (a1), int, (a2), vector unsigned char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned char, (a1), int, (a2), unsigned char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed char, (a1), int, (a2), vector signed char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed char, (a1), int, (a2), signed char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool char, (a1), int, (a2), vector bool char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool char, (a1), int, (a2), unsigned char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool char, (a1), int, (a2), signed char, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned short, (a1), int, (a2), vector unsigned short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned short, (a1), int, (a2), unsigned short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed short, (a1), int, (a2), vector signed short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed short, (a1), int, (a2), short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool short, (a1), int, (a2), vector bool short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool short, (a1), int, (a2), unsigned short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool short, (a1), int, (a2), short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector pixel, (a1), int, (a2), vector pixel, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector pixel, (a1), int, (a2), unsigned short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector pixel, (a1), int, (a2), short, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned int, (a1), int, (a2), vector unsigned int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector unsigned int, (a1), int, (a2), unsigned int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed int, (a1), int, (a2), vector signed int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector signed int, (a1), int, (a2), int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool int, (a1), int, (a2), vector bool int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool int, (a1), int, (a2), unsigned int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector bool int, (a1), int, (a2), int, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector float, (a1), int, (a2), vector float, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__ch (__tern_args_eq (vector float, (a1), int, (a2), float, *(a3)), \
+ __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (void *) (a3)), \
+__builtin_altivec_compiletime_error ("vec_stl")))))))))))))))))))))))))))
#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 ())))))))
+__ch (__tern_args_eq (vector unsigned char, (a), int, (b), unsigned char, *(c)), \
+ __builtin_altivec_stvebx ((vector signed char) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector signed char, (a), int, (b), signed char, *(c)), \
+ __builtin_altivec_stvebx ((vector signed char) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector bool char, (a), int, (b), unsigned char, *(c)), \
+ __builtin_altivec_stvebx ((vector signed char) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector bool char, (a), int, (b), signed char, *(c)), \
+ __builtin_altivec_stvebx ((vector signed char) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector unsigned short, (a), int, (b), unsigned short, *(c)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector signed short, (a), int, (b), short, *(c)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector bool short, (a), int, (b), unsigned short, *(c)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector bool short, (a), int, (b), short, *(c)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector pixel, (a), int, (b), unsigned short, *(c)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector pixel, (a), int, (b), short, *(c)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector unsigned int, (a), int, (b), unsigned int, *(c)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector signed int, (a), int, (b), int, *(c)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector bool int, (a), int, (b), unsigned int, *(c)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector bool int, (a), int, (b), int, *(c)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (void *) (c)), \
+__ch (__tern_args_eq (vector float, (a), int, (b), float, *(c)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (void *) (c)), \
+ __builtin_altivec_compiletime_error ("vec_ste"))))))))))))))))
#define vec_stvewx(a, b, c) \
__ch (__un_args_eq (vector unsigned int, (a)), \
@@ -7875,55 +10058,67 @@ __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 ())))
+__builtin_altivec_compiletime_error ("vec_stvewx"))))
#define vec_stvehx(a, b, c) \
__ch (__un_args_eq (vector unsigned short, (a)), \
__builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
__ch (__un_args_eq (vector signed short, (a)), \
__builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_stvehx")))
#define vec_stvebx(a, b, c) \
__ch (__un_args_eq (vector unsigned char, (a)), \
__builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
__ch (__un_args_eq (vector signed char, (a)), \
__builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
-__altivec_link_error_invalid_argument ()))
+__builtin_altivec_compiletime_error ("vec_stvebx")))
#define vec_sub(a1, a2) \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_sub"))))))))))))))))))))
#define vec_vsubfp(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsubfp"))
#define vec_vsubuwm(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
@@ -7934,7 +10129,7 @@ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ()))))
+__builtin_altivec_compiletime_error ("vec_vsubuwm")))))
#define vec_vsubuhm(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
@@ -7945,7 +10140,7 @@ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ()))))
+__builtin_altivec_compiletime_error ("vec_vsubuhm")))))
#define vec_vsububm(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
@@ -7956,44 +10151,56 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ()))))
+__builtin_altivec_compiletime_error ("vec_vsububm")))))
#define vec_subc(a1, a2) \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_subc"))
#define vec_subs(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ ((vector signed char) __builtin_altivec_vsubsbs ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ ((vector signed short) __builtin_altivec_vsubshs ((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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), vector bool int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsubsws ((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 ()))))))))))))
+ __builtin_altivec_compiletime_error ("vec_subs")))))))))))))))))))
#define vec_vsubsws(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsubsws"))
#define vec_vsubuws(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
@@ -8002,12 +10209,12 @@ __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vsubuws"))))
#define vec_vsubshs(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsubshs"))
#define vec_vsubuhs(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
@@ -8016,12 +10223,12 @@ __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vsubuhs"))))
#define vec_vsubsbs(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsubsbs"))
#define vec_vsububs(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
@@ -8030,7 +10237,7 @@ __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
-__altivec_link_error_invalid_argument ())))
+__builtin_altivec_compiletime_error ("vec_vsububs"))))
#define vec_sum4s(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
@@ -8039,503 +10246,740 @@ __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 ())))
+ __builtin_altivec_compiletime_error ("vec_sum4s"))))
#define vec_vsum4shs(a1, a2) \
__ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsum4shs"))
#define vec_vsum4sbs(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsum4sbs"))
#define vec_vsum4ubs(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vsum4ubs"))
-#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
+#define vec_sum2s(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsum2sws ((vector signed int) (a1), (vector signed int) (a2))), \
+__builtin_altivec_compiletime_error ("vec_sum2s"))
-#define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
+#define vec_sums(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsumsws ((vector signed int) (a1), (vector signed int) (a2))), \
+__builtin_altivec_compiletime_error ("vec_sums"))
-#define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
+#define vec_trunc(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ ((vector float) __builtin_altivec_vrfiz ((vector float) (a1))), \
+__builtin_altivec_compiletime_error ("vec_trunc"))
#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 unsigned short, (a1)), \
+__ch (__un_args_eq (vector bool char, (a1)), \
+ ((vector bool short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
+__ch (__un_args_eq (vector pixel, (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 ())))
+__ch (__un_args_eq (vector bool short, (a1)), \
+ ((vector bool int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_unpackh"))))))
#define vec_vupkhsh(a1) \
__ch (__un_args_eq (vector signed short, (a1)), \
((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vupkhsh"))
#define vec_vupkhpx(a1) \
__ch (__un_args_eq (vector unsigned short, (a1)), \
((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vupkhpx"))
#define vec_vupkhsb(a1) \
__ch (__un_args_eq (vector signed char, (a1)), \
((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vupkhsb"))
#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 unsigned short, (a1)), \
+__ch (__un_args_eq (vector bool char, (a1)), \
+ ((vector bool short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
+__ch (__un_args_eq (vector pixel, (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 ())))
+__ch (__un_args_eq (vector bool short, (a1)), \
+ ((vector bool int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
+ __builtin_altivec_compiletime_error ("vec_unpackl"))))))
#define vec_vupklsh(a1) \
__ch (__un_args_eq (vector signed short, (a1)), \
((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vupklsh"))
#define vec_vupklpx(a1) \
__ch (__un_args_eq (vector unsigned short, (a1)), \
((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vupklpx"))
#define vec_vupklsb(a1) \
__ch (__un_args_eq (vector signed char, (a1)), \
((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
-__altivec_link_error_invalid_argument ())
+__builtin_altivec_compiletime_error ("vec_vupklsb"))
#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 unsigned int, ((a2))), \
- ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
-__ch (__bin_args_eq (vector unsigned 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 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 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 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 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 signed short) __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 unsigned 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 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 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 unsigned char, ((a1)), vector unsigned 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 signed 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)))), \
- __altivec_link_error_invalid_argument ())))))))))))))))))))))))
+__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 bool int, (a2)), \
+ ((vector float) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \
+ ((vector bool int) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 bool short, (a1), vector bool short, (a2)), \
+ ((vector bool short) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 bool char, (a1), vector bool char, (a2)), \
+ ((vector bool char) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vxor ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector bool 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 bool 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))), \
+ __builtin_altivec_compiletime_error ("vec_xor")))))))))))))))))))))))))
/* Predicates. */
#define vec_all_eq(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector bool 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 signed char, (a1), vector bool 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 bool 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)), \
+__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector bool 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 signed short, (a1), vector bool 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 bool 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)), \
+__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 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)), \
+__ch (__bin_args_eq (vector signed int, (a1), vector bool 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 bool 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 bool int, (a1), vector bool 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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_all_eq"))))))))))))))))))))))))
#define vec_all_ge(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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_LT, (vector float) (a1), (vector float) (a2)), \
- __altivec_link_error_invalid_argument ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_all_ge"))))))))))))))))))))
#define vec_all_gt(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_all_gt"))))))))))))))))))))
-#define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
+#define vec_all_in(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2)), \
+ __builtin_altivec_compiletime_error ("vec_all_in"))
#define vec_all_le(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_all_le"))))))))))))))))))))
#define vec_all_lt(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_all_lt"))))))))))))))))))))
-#define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
+#define vec_all_nan(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_all_nan"))
#define vec_all_ne(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed char, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed short, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed int, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool int, (a1), vector bool 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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_all_ne"))))))))))))))))))))))))
-#define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
+#define vec_all_nge(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2)), \
+ __builtin_altivec_compiletime_error ("vec_all_nge"))
-#define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
+#define vec_all_ngt(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2)), \
+ __builtin_altivec_compiletime_error ("vec_all_ngt"))
-#define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
+#define vec_all_nle(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_all_nle"))
-#define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
+#define vec_all_nlt(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_all_nlt"))
-#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1))
+#define vec_all_numeric(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_all_numeric"))
#define vec_any_eq(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed char, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed short, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed int, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool int, (a1), vector bool 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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_any_eq"))))))))))))))))))))))))
#define vec_any_ge(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_any_ge"))))))))))))))))))))
#define vec_any_gt(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_any_gt"))))))))))))))))))))
#define vec_any_le(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_any_le"))))))))))))))))))))
#define vec_any_lt(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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 bool 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 char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpgtsb_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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 bool 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 short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpgtsh_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)), \
+__ch (__bin_args_eq (vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool 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 signed int, (a1), vector bool int, (a2)), \
+ __builtin_altivec_vcmpgtsw_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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_any_lt"))))))))))))))))))))
-#define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)
+#define vec_any_nan(a1) \
+__ch (__un_args_eq (vector float, (a1)), \
+ __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (a1), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_any_nan"))
#define vec_any_ne(a1, a2) \
-__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed char, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \
+ __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed short, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \
+ __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
+__ch (__bin_args_eq (vector bool 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 bool 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 signed int, (a1), vector bool 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)), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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 bool int, (a1), vector bool 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 ())))))))))))))
+ __builtin_altivec_compiletime_error ("vec_any_ne"))))))))))))))))))))))))
-#define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
+#define vec_any_nge(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2)), \
+ __builtin_altivec_compiletime_error ("vec_any_nge"))
-#define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
+#define vec_any_ngt(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2)), \
+ __builtin_altivec_compiletime_error ("vec_any_ngt"))
-#define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
+#define vec_any_nle(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_any_nle"))
-#define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
+#define vec_any_nlt(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_any_nlt"))
-#define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
+#define vec_any_numeric(a1) \
+__ch (__unn_args_eq (vector float, (a1)), \
+ __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1)), \
+ __builtin_altivec_compiletime_error ("vec_any_numeric"))
-#define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
+#define vec_any_out(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2)), \
+ __builtin_altivec_compiletime_error ("vec_any_out"))
#endif /* __cplusplus */
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 44ded5b..6f193f7 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -111,6 +111,13 @@ do { \
#define SUBTARGET_EXTRA_SPECS \
{ "darwin_arch", "ppc" },
+/* The "-faltivec" option should have been called "-maltivec" all along. */
+#define SUBTARGET_OPTION_TRANSLATE_TABLE \
+ { "-faltivec", "-maltivec -include altivec.h" }, \
+ { "-fno-altivec", "-mno-altivec" }, \
+ { "-Waltivec-long-deprecated", "-mwarn-altivec-long" }, \
+ { "-Wno-altivec-long-deprecated", "-mno-warn-altivec-long" }
+
/* Make both r2 and r3 available for allocation. */
#define FIXED_R2 0
#define FIXED_R13 0
diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c
index a47afee..08e34af 100644
--- a/gcc/config/rs6000/rs6000-c.c
+++ b/gcc/config/rs6000/rs6000-c.c
@@ -92,7 +92,15 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile)
if (! TARGET_POWER && ! TARGET_POWER2 && ! TARGET_POWERPC)
builtin_define ("_ARCH_COM");
if (TARGET_ALTIVEC)
- builtin_define ("__ALTIVEC__");
+ {
+ builtin_define ("__ALTIVEC__");
+ builtin_define ("__VEC__=10206");
+
+ /* Define the AltiVec syntactic elements. */
+ builtin_define ("__vector=__attribute__((altivec(vector__)))");
+ builtin_define ("__pixel=__attribute__((altivec(pixel__))) unsigned short");
+ builtin_define ("__bool=__attribute__((altivec(bool__))) unsigned");
+ }
if (TARGET_SPE)
builtin_define ("__SPE__");
if (TARGET_SOFT_FLOAT)
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 59cd623..df30bcb 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -217,6 +217,20 @@ static GTY(()) tree opaque_V2SI_type_node;
static GTY(()) tree opaque_V2SF_type_node;
static GTY(()) tree opaque_p_V2SI_type_node;
+/* AltiVec requires a few more basic types in addition to the vector
+ types already defined in tree.c. */
+static GTY(()) tree bool_char_type_node; /* __bool char */
+static GTY(()) tree bool_short_type_node; /* __bool short */
+static GTY(()) tree bool_int_type_node; /* __bool int */
+static GTY(()) tree pixel_type_node; /* __pixel */
+static GTY(()) tree bool_V16QI_type_node; /* __vector __bool char */
+static GTY(()) tree bool_V8HI_type_node; /* __vector __bool short */
+static GTY(()) tree bool_V4SI_type_node; /* __vector __bool int */
+static GTY(()) tree pixel_V8HI_type_node; /* __vector __pixel */
+
+int rs6000_warn_altivec_long = 1; /* On by default. */
+const char *rs6000_warn_altivec_long_switch;
+
const char *rs6000_traceback_name;
static enum {
traceback_default = 0,
@@ -287,6 +301,7 @@ static void rs6000_assemble_visibility (tree, int);
#endif
static int rs6000_ra_ever_killed (void);
static tree rs6000_handle_longcall_attribute (tree *, tree, tree, int, bool *);
+static tree rs6000_handle_altivec_attribute (tree *, tree, tree, int, bool *);
extern const struct attribute_spec rs6000_attribute_table[];
static void rs6000_set_default_type_attributes (tree);
static void rs6000_output_function_prologue (FILE *, HOST_WIDE_INT);
@@ -913,6 +928,17 @@ rs6000_override_options (const char *default_cpu)
rs6000_default_long_calls = (base[0] != 'n');
}
+ /* Handle -m(no-)warn-altivec-long similarly. */
+ if (rs6000_warn_altivec_long_switch)
+ {
+ const char *base = rs6000_warn_altivec_long_switch;
+ while (base[-1] != 'm') base--;
+
+ if (*rs6000_warn_altivec_long_switch != '\0')
+ error ("invalid option `%s'", base);
+ rs6000_warn_altivec_long = (base[0] != 'n');
+ }
+
/* Handle -mprioritize-restricted-insns option. */
rs6000_sched_restricted_insns_priority = DEFAULT_RESTRICTED_INSNS_PRIORITY;
if (rs6000_sched_restricted_insns_priority_str)
@@ -5465,6 +5491,7 @@ rs6000_expand_binop_builtin (enum insn_code icode, tree arglist, rtx target)
|| icode == CODE_FOR_spe_evsrwiu)
{
/* Only allow 5-bit unsigned literals. */
+ STRIP_NOPS (arg1);
if (TREE_CODE (arg1) != INTEGER_CST
|| TREE_INT_CST_LOW (arg1) & ~0x1f)
{
@@ -5687,6 +5714,7 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree arglist, rtx target)
|| icode == CODE_FOR_altivec_vsldoi_16qi)
{
/* Only allow 4-bit unsigned literals. */
+ STRIP_NOPS (arg2);
if (TREE_CODE (arg2) != INTEGER_CST
|| TREE_INT_CST_LOW (arg2) & ~0xf)
{
@@ -5857,6 +5885,7 @@ altivec_expand_dst_builtin (tree exp, rtx target ATTRIBUTE_UNUSED,
|| arg2 == error_mark_node)
return const0_rtx;
+ STRIP_NOPS (arg2);
if (TREE_CODE (arg2) != INTEGER_CST
|| TREE_INT_CST_LOW (arg2) & ~0x3)
{
@@ -5963,6 +5992,7 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp)
case ALTIVEC_BUILTIN_DSS:
icode = CODE_FOR_altivec_dss;
arg0 = TREE_VALUE (arglist);
+ STRIP_NOPS (arg0);
op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0);
mode0 = insn_data[icode].operand[0].mode;
@@ -5982,6 +6012,15 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp)
emit_insn (gen_altivec_dss (op0));
return NULL_RTX;
+
+ case ALTIVEC_BUILTIN_COMPILETIME_ERROR:
+ arg0 = TREE_VALUE (arglist);
+ while (TREE_CODE (arg0) == NOP_EXPR || TREE_CODE (arg0) == ADDR_EXPR)
+ arg0 = TREE_OPERAND (arg0, 0);
+ error ("invalid parameter combination for `%s' AltiVec intrinsic",
+ TREE_STRING_POINTER (arg0));
+
+ return const0_rtx;
}
/* Expand abs* operations. */
@@ -6421,6 +6460,74 @@ rs6000_init_builtins (void)
opaque_V2SF_type_node = copy_node (V2SF_type_node);
opaque_p_V2SI_type_node = build_pointer_type (opaque_V2SI_type_node);
+ /* The 'vector bool ...' types must be kept distinct from 'vector unsigned ...'
+ types, especially in C++ land. Similarly, 'vector pixel' is distinct from
+ 'vector unsigned short'. */
+
+ bool_char_type_node = copy_node (unsigned_intQI_type_node);
+ TYPE_MAIN_VARIANT (bool_char_type_node) = bool_char_type_node;
+ bool_short_type_node = copy_node (unsigned_intHI_type_node);
+ TYPE_MAIN_VARIANT (bool_short_type_node) = bool_short_type_node;
+ bool_int_type_node = copy_node (unsigned_intSI_type_node);
+ TYPE_MAIN_VARIANT (bool_int_type_node) = bool_int_type_node;
+ pixel_type_node = copy_node (unsigned_intHI_type_node);
+ TYPE_MAIN_VARIANT (pixel_type_node) = pixel_type_node;
+
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__bool char"),
+ bool_char_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__bool short"),
+ bool_short_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__bool int"),
+ bool_int_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__pixel"),
+ pixel_type_node));
+
+ bool_V16QI_type_node = make_vector (V16QImode, bool_char_type_node, 1);
+ bool_V8HI_type_node = make_vector (V8HImode, bool_short_type_node, 1);
+ bool_V4SI_type_node = make_vector (V4SImode, bool_int_type_node, 1);
+ pixel_V8HI_type_node = make_vector (V8HImode, pixel_type_node, 1);
+
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector unsigned char"),
+ unsigned_V16QI_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector signed char"),
+ V16QI_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector __bool char"),
+ bool_V16QI_type_node));
+
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector unsigned short"),
+ unsigned_V8HI_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector signed short"),
+ V8HI_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector __bool short"),
+ bool_V8HI_type_node));
+
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector unsigned int"),
+ unsigned_V4SI_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector signed int"),
+ V4SI_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector __bool int"),
+ bool_V4SI_type_node));
+
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector float"),
+ V4SF_type_node));
+ (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+ get_identifier ("__vector __pixel"),
+ pixel_V8HI_type_node));
+
if (TARGET_SPE)
spe_init_builtins ();
if (TARGET_ALTIVEC)
@@ -6771,11 +6878,14 @@ altivec_init_builtins (void)
= build_function_type_list (V16QI_type_node, V16QI_type_node, NULL_TREE);
tree v4sf_ftype_v4sf
= build_function_type_list (V4SF_type_node, V4SF_type_node, NULL_TREE);
- tree void_ftype_pcvoid_int_char
+ tree void_ftype_pcvoid_int_int
= build_function_type_list (void_type_node,
pcvoid_type_node, integer_type_node,
- char_type_node, NULL_TREE);
-
+ integer_type_node, NULL_TREE);
+ tree int_ftype_pcchar
+ = build_function_type_list (integer_type_node,
+ pcchar_type_node, NULL_TREE);
+
def_builtin (MASK_ALTIVEC, "__builtin_altivec_ld_internal_4sf", v4sf_ftype_pcfloat,
ALTIVEC_BUILTIN_LD_INTERNAL_4sf);
def_builtin (MASK_ALTIVEC, "__builtin_altivec_st_internal_4sf", void_ftype_pfloat_v4sf,
@@ -6809,10 +6919,14 @@ altivec_init_builtins (void)
def_builtin (MASK_ALTIVEC, "__builtin_altivec_stvebx", void_ftype_v16qi_long_pvoid, ALTIVEC_BUILTIN_STVEBX);
def_builtin (MASK_ALTIVEC, "__builtin_altivec_stvehx", void_ftype_v8hi_long_pvoid, ALTIVEC_BUILTIN_STVEHX);
+ /* See altivec.h for usage of "__builtin_altivec_compiletime_error". */
+ def_builtin (MASK_ALTIVEC, "__builtin_altivec_compiletime_error", int_ftype_pcchar,
+ ALTIVEC_BUILTIN_COMPILETIME_ERROR);
+
/* Add the DST variants. */
d = (struct builtin_description *) bdesc_dst;
for (i = 0; i < ARRAY_SIZE (bdesc_dst); i++, d++)
- def_builtin (d->mask, d->name, void_ftype_pcvoid_int_char, d->code);
+ def_builtin (d->mask, d->name, void_ftype_pcvoid_int_int, d->code);
/* Initialize the predicates. */
dp = (struct builtin_description_predicates *) bdesc_altivec_preds;
@@ -8896,12 +9010,12 @@ print_operand (FILE *file, rtx x, int code)
case 'P':
/* The operand must be an indirect memory reference. The result
- is the register number. */
+ is the register name. */
if (GET_CODE (x) != MEM || GET_CODE (XEXP (x, 0)) != REG
|| REGNO (XEXP (x, 0)) >= 32)
output_operand_lossage ("invalid %%P value");
else
- fprintf (file, "%d", REGNO (XEXP (x, 0)));
+ fprintf (file, "%s", reg_names[REGNO (XEXP (x, 0))]);
return;
case 'q':
@@ -14546,11 +14660,99 @@ rs6000_initialize_trampoline (rtx addr, rtx fnaddr, rtx cxt)
const struct attribute_spec rs6000_attribute_table[] =
{
/* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
+ { "altivec", 1, 1, false, true, false, rs6000_handle_altivec_attribute },
{ "longcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute },
{ "shortcall", 0, 0, false, true, true, rs6000_handle_longcall_attribute },
{ NULL, 0, 0, false, false, false, NULL }
};
+/* Handle the "altivec" attribute. The attribute may have
+ arguments as follows:
+
+ __attribute__((altivec(vector__)))
+ __attribute__((altivec(pixel__))) (always followed by 'unsigned short')
+ __attribute__((altivec(bool__))) (always followed by 'unsigned')
+
+ and may appear more than once (e.g., 'vector bool char') in a
+ given declaration. */
+
+static tree
+rs6000_handle_altivec_attribute (tree *node, tree name, tree args,
+ int flags ATTRIBUTE_UNUSED,
+ bool *no_add_attrs)
+{
+ tree type = *node, result = NULL_TREE;
+ enum machine_mode mode;
+ int unsigned_p;
+ char altivec_type
+ = ((args && TREE_CODE (args) == TREE_LIST && TREE_VALUE (args)
+ && TREE_CODE (TREE_VALUE (args)) == IDENTIFIER_NODE)
+ ? *IDENTIFIER_POINTER (TREE_VALUE (args))
+ : '?');
+
+ while (POINTER_TYPE_P (type)
+ || TREE_CODE (type) == FUNCTION_TYPE
+ || TREE_CODE (type) == METHOD_TYPE
+ || TREE_CODE (type) == ARRAY_TYPE)
+ type = TREE_TYPE (type);
+
+ mode = TYPE_MODE (type);
+
+ if (rs6000_warn_altivec_long
+ && (type == long_unsigned_type_node || type == long_integer_type_node))
+ warning ("use of 'long' in AltiVec types is deprecated; use 'int'");
+
+ switch (altivec_type)
+ {
+ case 'v':
+ unsigned_p = TREE_UNSIGNED (type);
+ switch (mode)
+ {
+ case SImode:
+ result = (unsigned_p ? unsigned_V4SI_type_node : V4SI_type_node);
+ break;
+ case HImode:
+ result = (unsigned_p ? unsigned_V8HI_type_node : V8HI_type_node);
+ break;
+ case QImode:
+ result = (unsigned_p ? unsigned_V16QI_type_node : V16QI_type_node);
+ break;
+ case SFmode: result = V4SF_type_node; break;
+ /* If the user says 'vector int bool', we may be handed the 'bool'
+ attribute _before_ the 'vector' attribute, and so select the proper
+ type in the 'b' case below. */
+ case V4SImode: case V8HImode: case V16QImode: result = type;
+ default: break;
+ }
+ break;
+ case 'b':
+ switch (mode)
+ {
+ case SImode: case V4SImode: result = bool_V4SI_type_node; break;
+ case HImode: case V8HImode: result = bool_V8HI_type_node; break;
+ case QImode: case V16QImode: result = bool_V16QI_type_node;
+ default: break;
+ }
+ break;
+ case 'p':
+ switch (mode)
+ {
+ case V8HImode: result = pixel_V8HI_type_node;
+ default: break;
+ }
+ default: break;
+ }
+
+ *no_add_attrs = true; /* No need to hang on to the attribute. */
+
+ if (!result)
+ warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name));
+ else
+ *node = reconstruct_complex_type (*node, result);
+
+ return NULL_TREE;
+}
+
/* Handle a "longcall" or "shortcall" attribute; arguments as in
struct attribute_spec.handler. */
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index cd8d05d..ccceb17 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -452,6 +452,9 @@ enum group_termination
{"longcall", &rs6000_longcall_switch, \
N_("Avoid all range limits on call instructions"), 0}, \
{"no-longcall", &rs6000_longcall_switch, "", 0}, \
+ {"warn-altivec-long", &rs6000_warn_altivec_long_switch, \
+ N_("Warn about deprecated 'vector long ...' AltiVec type usage"), 0}, \
+ {"no-warn-altivec-long", &rs6000_warn_altivec_long_switch, "", 0}, \
{"sched-costly-dep=", &rs6000_sched_costly_dep_str, \
N_("Determine which dependences between insns are considered costly"), 0}, \
{"insert-sched-nops=", &rs6000_sched_insert_nops_str, \
@@ -520,6 +523,9 @@ extern enum rs6000_dependence_cost rs6000_sched_costly_dep;
extern const char *rs6000_sched_insert_nops_str;
extern enum rs6000_nop_insertion rs6000_sched_insert_nops;
+extern int rs6000_warn_altivec_long;
+extern const char *rs6000_warn_altivec_long_switch;
+
/* Alignment options for fields in structures for sub-targets following
AIX-like ABI.
ALIGN_POWER word-aligns FP doubles (default AIX ABI).
@@ -2911,9 +2917,11 @@ enum rs6000_builtins
ALTIVEC_BUILTIN_ABS_V4SI,
ALTIVEC_BUILTIN_ABS_V4SF,
ALTIVEC_BUILTIN_ABS_V8HI,
- ALTIVEC_BUILTIN_ABS_V16QI
+ ALTIVEC_BUILTIN_ABS_V16QI,
+ ALTIVEC_BUILTIN_COMPILETIME_ERROR,
+
/* SPE builtins. */
- , SPE_BUILTIN_EVADDW,
+ SPE_BUILTIN_EVADDW,
SPE_BUILTIN_EVAND,
SPE_BUILTIN_EVANDC,
SPE_BUILTIN_EVDIVWS,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cdb131e..a69f71e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,21 @@
+2004-02-21 Ziemowit Laski <zlaski@apple.com>
+
+ * g++.dg/ext/altivec-1.C: Generalize target triple.
+ * g++.dg/ext/altivec-2.C: New test case.
+ * g++.dg/ext/altivec_check.h: New file.
+ * gcc.dg/altivec-1.c: Generalize target triple;
+ include altivec_check.h and call altivec_check().
+ * gcc.dg/altivec-[2-5].c: Generalize target triple.
+ * gcc.dg/altivec-6.c: New test case.
+ * gcc.dg/altivec-[7-9].c: Generalize target triple; add
+ type casts as needed.
+ * gcc.dg/altivec-10.c: Include altivec_check.h and call
+ altivec_check().
+ * gcc.dg/altivec-12.c: New test case.
+ * gcc.dg/altivec-varargs-1.c: Generalize target triple;
+ include altivec_check.h and call altivec_check().
+ * gcc.dg/altivec_check.h: New file.
+
2004-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* lib/target-supports.exp (check_alias_available): Don't mangle
diff --git a/gcc/testsuite/g++.dg/ext/altivec-1.C b/gcc/testsuite/g++.dg/ext/altivec-1.C
index b7e3af3..09c2343 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-1.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-1.C
@@ -1,4 +1,4 @@
-// { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
#include <altivec.h>
diff --git a/gcc/testsuite/g++.dg/ext/altivec-2.C b/gcc/testsuite/g++.dg/ext/altivec-2.C
new file mode 100644
index 0000000..4c9518a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/altivec-2.C
@@ -0,0 +1,25 @@
+/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-options "-maltivec -Wall" } */
+
+/* This test checks if AltiVec builtins accept const-qualified
+ arguments. */
+
+#include <altivec.h>
+#include "altivec_check.h"
+
+int main (int argc, const char * argv[])
+{
+ int i;
+ const float cf = 1.0;
+ vector float v;
+ const vector float cv = (vector float){1.0, 2.0, 3.0, 4.0};
+
+ altivec_check ();
+
+ vec_dst(&cv, i, 0);
+ v = vec_ld(0, &cv);
+ v = vec_lde(0, &cf);
+ vec_lvsl(0, &cf);
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/ext/altivec_check.h b/gcc/testsuite/g++.dg/ext/altivec_check.h
new file mode 100644
index 0000000..4f12d85
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/altivec_check.h
@@ -0,0 +1,23 @@
+/* A runtime check for AltiVec capability. */
+/* Contributed by Ziemowit Laski <zlaski@apple.com> */
+
+#include <signal.h>
+extern void exit(int);
+
+void
+sig_ill_handler (int sig)
+{
+ exit (0);
+}
+
+void altivec_check(void) {
+
+ /* Exit on systems without AltiVec. */
+ signal (SIGILL, sig_ill_handler);
+#ifdef __MACH__
+ asm volatile ("vor v0,v0,v0");
+#else
+ asm volatile ("vor 0,0,0");
+#endif
+ signal (SIGILL, SIG_DFL);
+}
diff --git a/gcc/testsuite/gcc.dg/altivec-1.c b/gcc/testsuite/gcc.dg/altivec-1.c
index 3d37a2e..59654be 100644
--- a/gcc/testsuite/gcc.dg/altivec-1.c
+++ b/gcc/testsuite/gcc.dg/altivec-1.c
@@ -1,9 +1,10 @@
-/* { dg-do run { target powerpc-*-*altivec powerpc-*-*-*altivec } } */
+/* { dg-do run { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
/* Program to test PowerPC AltiVec instructions. */
#include <altivec.h>
+#include "altivec_check.h"
extern void abort (void);
@@ -22,6 +23,8 @@ vector float f, g, h;
int main ()
{
+ altivec_check(); /* Exits if AltiVec not supported */
+
k = vec_add (a1, a2);
if (!vec_all_eq (addi, k))
abort ();
diff --git a/gcc/testsuite/gcc.dg/altivec-10.c b/gcc/testsuite/gcc.dg/altivec-10.c
index 8d9223f..a0225a4 100644
--- a/gcc/testsuite/gcc.dg/altivec-10.c
+++ b/gcc/testsuite/gcc.dg/altivec-10.c
@@ -4,11 +4,7 @@
#include <altivec.h>
#include <signal.h>
-void
-sig_ill_handler (int sig)
-{
- exit(0);
-}
+#include "altivec_check.h"
typedef union
{
@@ -62,7 +58,7 @@ check_cmple()
{
vector float a = {1.0, 2.0, 3.0, 4.0};
vector float b = {1.0, 3.0, 2.0, 5.0};
- vector signed int aux;
+ vector bool int aux;
vector signed int le = {-1, -1, 0, -1};
aux = vec_cmple (a, b);
@@ -75,10 +71,7 @@ check_cmple()
int
main()
{
- /* Exit on systems without altivec. */
- signal (SIGILL, sig_ill_handler);
- asm volatile ("vor 0,0,0");
- signal (SIGILL, SIG_DFL);
+ altivec_check ();
check_cmple ();
check_vec_all_num ();
diff --git a/gcc/testsuite/gcc.dg/altivec-12.c b/gcc/testsuite/gcc.dg/altivec-12.c
new file mode 100644
index 0000000..ae9cdf4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/altivec-12.c
@@ -0,0 +1,94 @@
+/* { dg-do run { target powerpc*-*-darwin* } } */
+/* { dg-options "-faltivec" } */
+
+/* Program to test PowerPC AltiVec instructions. */
+
+#include "altivec_check.h"
+
+extern void abort (void);
+#define CHECK_IF(E) if(!(E)) abort()
+
+vector int a1 = (vector int){ 100, 200, 300, 400 };
+vector int a2 = (vector int){ 500, 600, 700, 800 };
+vector int addi = (vector int){ 600, 800, 1000, 1200 };
+vector int avgi = (vector int){ 300, 400, 500, 600 };
+
+vector float f1 = (vector float){ 1.0, 2.0, 3.0, 4.0 };
+vector float f2 = (vector float){ 5.0, 6.0, 7.0, 8.0 };
+vector float f3;
+vector float addf1 = (vector float){ 6.0, 8.0, 10.0, 12.0 };
+vector float addf2 = (vector float){ 6.1, 8.1, 10.1, 12.1 };
+vector float addf3 = (vector float){ 6.0, 8.0, 9.9, 12.1 };
+vector int k;
+vector float f, g, h;
+
+int main ()
+{
+
+ altivec_check(); /* Exit if AltiVec not available. */
+
+ k = vec_add (a1, a2);
+ CHECK_IF (vec_all_eq (addi, k));
+ CHECK_IF (vec_all_ge (addi, k));
+ CHECK_IF (vec_all_le (addi, k));
+ CHECK_IF (vec_any_eq (addi, k));
+ CHECK_IF (vec_any_ge (addi, k));
+ CHECK_IF (vec_any_le (addi, k));
+ CHECK_IF (!vec_any_ne (addi, k));
+ CHECK_IF (!vec_any_lt (addi, k));
+ CHECK_IF (!vec_any_gt (addi, k));
+ CHECK_IF (!vec_any_ne (addi, k));
+ CHECK_IF (!vec_any_lt (addi, k));
+ CHECK_IF (!vec_any_gt (addi, k));
+
+ k = vec_avg (a1, a2);
+ CHECK_IF (vec_all_eq (k, avgi));
+
+ h = vec_add (f1, f2);
+ CHECK_IF (vec_all_eq (h, addf1));
+ CHECK_IF (vec_all_ge (h, addf1));
+ CHECK_IF (vec_all_le (h, addf1));
+ CHECK_IF (vec_any_eq (h, addf1));
+ CHECK_IF (vec_any_ge (h, addf1));
+ CHECK_IF (vec_any_le (h, addf1));
+ CHECK_IF (!vec_any_ne (h, addf1));
+ CHECK_IF (!vec_any_lt (h, addf1));
+ CHECK_IF (!vec_any_gt (h, addf1));
+ CHECK_IF (!vec_any_ne (h, addf1));
+ CHECK_IF (!vec_any_lt (h, addf1));
+ CHECK_IF (!vec_any_gt (h, addf1));
+
+ CHECK_IF (vec_all_gt (addf2, addf1));
+ CHECK_IF (vec_any_gt (addf2, addf1));
+ CHECK_IF (vec_all_ge (addf2, addf1));
+ CHECK_IF (vec_any_ge (addf2, addf1));
+ CHECK_IF (vec_all_ne (addf2, addf1));
+ CHECK_IF (vec_any_ne (addf2, addf1));
+ CHECK_IF (!vec_all_lt (addf2, addf1));
+ CHECK_IF (!vec_any_lt (addf2, addf1));
+ CHECK_IF (!vec_all_le (addf2, addf1));
+ CHECK_IF (!vec_any_le (addf2, addf1));
+ CHECK_IF (!vec_all_eq (addf2, addf1));
+ CHECK_IF (!vec_any_eq (addf2, addf1));
+
+ CHECK_IF (vec_any_eq (addf3, addf1));
+ CHECK_IF (vec_any_ne (addf3, addf1));
+ CHECK_IF (vec_any_lt (addf3, addf1));
+ CHECK_IF (vec_any_le (addf3, addf1));
+ CHECK_IF (vec_any_gt (addf3, addf1));
+ CHECK_IF (vec_any_ge (addf3, addf1));
+ CHECK_IF (!vec_all_eq (addf3, addf1));
+ CHECK_IF (!vec_all_ne (addf3, addf1));
+ CHECK_IF (!vec_all_lt (addf3, addf1));
+ CHECK_IF (!vec_all_le (addf3, addf1));
+ CHECK_IF (!vec_all_gt (addf3, addf1));
+ CHECK_IF (!vec_all_ge (addf3, addf1));
+
+ CHECK_IF (vec_all_numeric (addf3));
+ CHECK_IF (vec_all_in (addf1, addf2));
+
+ CHECK_IF (vec_step (vector bool char) == 16);
+ CHECK_IF (vec_step (addf3) == 4);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/altivec-2.c b/gcc/testsuite/gcc.dg/altivec-2.c
index 3c74d39..f64081f 100644
--- a/gcc/testsuite/gcc.dg/altivec-2.c
+++ b/gcc/testsuite/gcc.dg/altivec-2.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
/* Program to test the vector_size attribute. This needs to run on a
diff --git a/gcc/testsuite/gcc.dg/altivec-3.c b/gcc/testsuite/gcc.dg/altivec-3.c
index c82f1e2..1321a72 100644
--- a/gcc/testsuite/gcc.dg/altivec-3.c
+++ b/gcc/testsuite/gcc.dg/altivec-3.c
@@ -1,6 +1,8 @@
-/* { dg-do run { target powerpc-*-*altivec powerpc-*-*-*altivec } } */
+/* { dg-do run { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
+#include "altivec_check.h"
+
typedef int int4 __attribute__ ((mode(V4SI)));
typedef float float4 __attribute__ ((mode(V4SF)));
@@ -55,6 +57,8 @@ main ()
float4 f3 = (float4) { 6.0, 8.0, 10.0, 12.0 };
float4 ftmp;
+ altivec_check ();
+
vec_store (i3, a3);
itmp = vec_add_int4 (a1, a2);
vec_store (j3, itmp);
diff --git a/gcc/testsuite/gcc.dg/altivec-4.c b/gcc/testsuite/gcc.dg/altivec-4.c
index 244e31b..1756635 100644
--- a/gcc/testsuite/gcc.dg/altivec-4.c
+++ b/gcc/testsuite/gcc.dg/altivec-4.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec -O0 -Wall" } */
#define vector __attribute__((vector_size(16)))
diff --git a/gcc/testsuite/gcc.dg/altivec-5.c b/gcc/testsuite/gcc.dg/altivec-5.c
index 61d19d9..0adfdb8 100644
--- a/gcc/testsuite/gcc.dg/altivec-5.c
+++ b/gcc/testsuite/gcc.dg/altivec-5.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec -O2" } */
#define vector __attribute__((vector_size(16)))
diff --git a/gcc/testsuite/gcc.dg/altivec-6.c b/gcc/testsuite/gcc.dg/altivec-6.c
new file mode 100644
index 0000000..85e597f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/altivec-6.c
@@ -0,0 +1,64 @@
+/* { dg-do compile { target powerpc-*-darwin* } } */
+/* { dg-options "-faltivec -O0 -Wall" } */
+
+
+/* These denote "generic" GCC vectors. */
+static int __attribute__((mode(V4SI))) x, y;
+
+static vector signed int i,j;
+static vector signed short s,t;
+static vector signed char c,d;
+static vector float f,g;
+
+static vector unsigned char uc;
+
+static vector signed int *pi;
+
+static int int1, int2;
+
+void
+b()
+{
+ vec_add (x, y);
+
+ /* Make sure the predicates accept correct argument types. */
+
+ int1 = vec_all_in (f, g);
+ int1 = vec_all_ge (f, g);
+ int1 = vec_all_eq (c, d);
+ int1 = vec_all_ne (s, t);
+ int1 = vec_any_eq (i, j);
+ int1 = vec_any_ge (f, g);
+ int1 = vec_all_ngt (f, g);
+ int1 = vec_any_ge (c, d);
+ int1 = vec_any_ge (s, t);
+ int1 = vec_any_ge (i, j);
+ int1 = vec_any_ge (c, d);
+ int1 = vec_any_ge (s, t);
+ int1 = vec_any_ge (i, j);
+
+ vec_mtvscr (i);
+ vec_dssall ();
+ s = (vector signed short) vec_mfvscr ();
+ vec_dss (3);
+
+ vec_dst (pi, int1 + int2, 3);
+ vec_dstst (pi, int1 + int2, 3);
+ vec_dststt (pi, int1 + int2, 3);
+ vec_dstt (pi, int1 + int2, 3);
+
+ uc = (vector unsigned char) vec_lvsl (int1 + 69, (signed int *) pi);
+ uc = (vector unsigned char) vec_lvsr (int1 + 69, (signed int *) pi);
+
+ c = vec_lde (int1, (signed char *) pi);
+ s = vec_lde (int1, (signed short *) pi);
+ i = vec_lde (int1, (signed int *) pi);
+ i = vec_ldl (int1, pi);
+ i = vec_ld (int1, pi);
+
+ vec_st (i, int2, pi);
+ vec_ste (c, int2, (signed char *) pi);
+ vec_ste (s, int2, (signed short *) pi);
+ vec_ste (i, int2, (signed int *) pi);
+ vec_stl (i, int2, pi);
+}
diff --git a/gcc/testsuite/gcc.dg/altivec-7.c b/gcc/testsuite/gcc.dg/altivec-7.c
index 7e118d9..bb04b50 100644
--- a/gcc/testsuite/gcc.dg/altivec-7.c
+++ b/gcc/testsuite/gcc.dg/altivec-7.c
@@ -1,6 +1,6 @@
/* Origin: Aldy Hernandez <aldyh@redhat.com> */
-/* { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
#include <altivec.h>
@@ -10,19 +10,19 @@ int *var_int;
unsigned long **ulongp;
vector pixel *varpixel;
vector signed char *vecchar;
-vector signed long *vecint;
+vector signed long *vecint; /* { dg-warning "use of .long. in AltiVec types is deprecated; use .int." } */
vector signed short *vecshort;
vector unsigned char *vecuchar;
-vector unsigned long *vecuint;
+vector unsigned long *vecuint; /* { dg-warning "use of .long. in AltiVec types is deprecated; use .int." } */
vector unsigned short *vecushort;
vector float *vecfloat;
int main ()
{
- *vecfloat++ = vec_andc(vecint[0], vecfloat[1]);
- *vecfloat++ = vec_andc(vecfloat[0], vecint[1]);
- *vecfloat++ = vec_vxor(vecint[0], vecfloat[1]);
- *vecfloat++ = vec_vxor(vecfloat[0], vecint[1]);
+ *vecfloat++ = vec_andc((vector bool int)vecint[0], vecfloat[1]);
+ *vecfloat++ = vec_andc(vecfloat[0], (vector bool int)vecint[1]);
+ *vecfloat++ = vec_vxor((vector bool int)vecint[0], vecfloat[1]);
+ *vecfloat++ = vec_vxor(vecfloat[0], (vector bool int)vecint[1]);
*varpixel++ = vec_packpx(vecuint[0], vecuint[1]);
*varpixel++ = vec_vpkpx(vecuint[0], vecuint[1]);
*vecshort++ = vec_vmulosb(vecchar[0], vecchar[1]);
@@ -32,14 +32,14 @@ int main ()
*vecint++ = vec_lvewx(var_int[0], longp[1]);
*vecint++ = vec_unpackh(vecshort[0]);
*vecint++ = vec_unpackl(vecshort[0]);
- *vecushort++ = vec_andc(vecshort[0], vecushort[1]);
- *vecushort++ = vec_andc(vecushort[0], vecshort[1]);
- *vecushort++ = vec_vxor(vecshort[0], vecushort[1]);
- *vecushort++ = vec_vxor(vecushort[0], vecshort[1]);
+ *vecushort++ = vec_andc((vector bool short)vecshort[0], vecushort[1]);
+ *vecushort++ = vec_andc(vecushort[0], (vector bool short)vecshort[1]);
+ *vecushort++ = vec_vxor((vector bool short)vecshort[0], vecushort[1]);
+ *vecushort++ = vec_vxor(vecushort[0], (vector bool short)vecshort[1]);
*vecuint++ = vec_ld(var_int[0], ulongp[1]);
*vecuint++ = vec_lvx(var_int[0], ulongp[1]);
*vecuint++ = vec_vmsumubm(vecuchar[0], vecuchar[1], vecuint[2]);
- *vecuchar++ = vec_xor(vecuchar[0], vecchar[1]);
+ *vecuchar++ = vec_xor(vecuchar[0], (vector unsigned char)vecchar[1]);
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/altivec-8.c b/gcc/testsuite/gcc.dg/altivec-8.c
index 2d6803a..bbd2cf7 100644
--- a/gcc/testsuite/gcc.dg/altivec-8.c
+++ b/gcc/testsuite/gcc.dg/altivec-8.c
@@ -1,7 +1,7 @@
/* Origin: Aldy Hernandez <aldyh@redhat.com> */
/* Test rs6000_legitimate_address. PRE_INC should be invalid. */
-/* { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
#include <altivec.h>
diff --git a/gcc/testsuite/gcc.dg/altivec-9.c b/gcc/testsuite/gcc.dg/altivec-9.c
index 6232822..36c79d3 100644
--- a/gcc/testsuite/gcc.dg/altivec-9.c
+++ b/gcc/testsuite/gcc.dg/altivec-9.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target powerpc-*-* } } */
+/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec -mabi=altivec -g" } */
/* PR9564 */
diff --git a/gcc/testsuite/gcc.dg/altivec-varargs-1.c b/gcc/testsuite/gcc.dg/altivec-varargs-1.c
index caf6a26..14e5e6e 100644
--- a/gcc/testsuite/gcc.dg/altivec-varargs-1.c
+++ b/gcc/testsuite/gcc.dg/altivec-varargs-1.c
@@ -1,9 +1,11 @@
-/* { dg-do run { target powerpc*-*-darwin* powerpc*-*-*altivec* powerpc*-*-linux*} } */
+/* { dg-do run { target powerpc*-*-* } } */
/* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
#include <stdarg.h>
#include <signal.h>
+#include "altivec_check.h"
+
#define vector __attribute__((mode(V4SI)))
const vector unsigned int v1 = {10,11,12,13};
@@ -72,19 +74,10 @@ int main1(void)
return 0;
}
-void
-sig_ill_handler (int sig)
-{
- exit(0);
-}
-
int main (void)
{
- /* Exit on systems without altivec. */
- signal (SIGILL, sig_ill_handler);
- /* Altivec instruction, 'vor %v0,%v0,%v0'. */
- asm volatile (".long 0x10000484");
- signal (SIGILL, SIG_DFL);
+ /* Exit on systems without AltiVec. */
+ altivec_check ();
return main1 ();
}
diff --git a/gcc/testsuite/gcc.dg/altivec_check.h b/gcc/testsuite/gcc.dg/altivec_check.h
new file mode 100644
index 0000000..c64d918
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/altivec_check.h
@@ -0,0 +1,23 @@
+/* A runtime check for AltiVec capability. */
+/* Contributed by Ziemowit Laski <zlaski@apple.com> */
+
+#include <signal.h>
+extern void exit (int);
+
+void
+sig_ill_handler (int sig)
+{
+ exit (0);
+}
+
+void altivec_check(void) {
+
+ /* Exit on systems without AltiVec. */
+ signal (SIGILL, sig_ill_handler);
+#ifdef __MACH__
+ asm volatile ("vor v0,v0,v0");
+#else
+ asm volatile ("vor 0,0,0");
+#endif
+ signal (SIGILL, SIG_DFL);
+}
diff --git a/libf2c/libI77/config.h.in b/libf2c/libI77/config.h.in
index 63aacb5..3ae78d1 100644
--- a/libf2c/libI77/config.h.in
+++ b/libf2c/libI77/config.h.in
@@ -1,4 +1,4 @@
-/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */
+/* config.h.in. Generated automatically from configure.in by autoheader. */
/* Define to empty if the keyword does not work. */
#undef const
diff --git a/libf2c/libU77/config.hin b/libf2c/libU77/config.hin
index ba32a44..e6d5af2 100644
--- a/libf2c/libU77/config.hin
+++ b/libf2c/libU77/config.hin
@@ -1,4 +1,4 @@
-/* config.hin. Generated automatically from configure.in by autoheader 2.13. */
+/* config.hin. Generated automatically from configure.in by autoheader. */
/* Define to empty if the keyword does not work. */
#undef const