altivec.h (vec_cmple, [...]): Fix typo.
authorHartmut Penner <hpenner@de.ibm.com>
Tue, 16 Dec 2003 07:42:08 +0000 (07:42 +0000)
committerHartmut Penner <hpenner@gcc.gnu.org>
Tue, 16 Dec 2003 07:42:08 +0000 (07:42 +0000)
      * altivec.h (vec_cmple, vec_all_numeric): Fix typo.
      * testsuite/gcc.dg/altivec-10.c: Test for above.

From-SVN: r74675

gcc/ChangeLog
gcc/config/rs6000/altivec.h
gcc/testsuite/gcc.dg/altivec-10.c [new file with mode: 0644]

index 2cfcc88de61275ef6993a0fa974046f958aec915..45e05a8c989a4d65b33cab0497f957ce50ad8e07 100644 (file)
@@ -1,3 +1,8 @@
+2003-12-16  Hartmut Penner  <hpenner@de.ibm.com>
+
+       * altivec.h (vec_cmple, vec_all_numeric): Fix typo.
+       * testsuite/gcc.dg/altivec-10.c: Test for above.
+       
 2003-12-15  David O'Brien  <obrien@FreeBSD.org>
 
        * Makefile.in (CPPFLAGS): Initialize from configure.
index d7718fee98b8658d16e3064c87c21def64895c27..c98d6ea374338d0c3c6e2b5331e18b8ac0781467 100644 (file)
@@ -1094,7 +1094,7 @@ vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
 inline vector signed int
 vec_cmple (vector float a1, vector float a2)
 {
-  return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
+  return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1);
 }
 
 /* vec_cmplt */
@@ -5526,7 +5526,7 @@ vec_all_nlt (vector float a1, vector float a2)
 inline int
 vec_all_numeric (vector float a1)
 {
-  return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
+  return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1);
 }
 
 /* vec_any_eq */
@@ -6521,7 +6521,7 @@ __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 ())
 
-#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
+#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a2), (a1))
 
 #define vec_cmplt(a2, a1) \
 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
@@ -8343,7 +8343,7 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
 
 #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
 
-#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
+#define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1))
 
 #define vec_any_eq(a1, a2) \
 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
diff --git a/gcc/testsuite/gcc.dg/altivec-10.c b/gcc/testsuite/gcc.dg/altivec-10.c
new file mode 100644 (file)
index 0000000..8d9223f
--- /dev/null
@@ -0,0 +1,86 @@
+/* { dg-do compile { target powerpc*-*-* } } */
+/* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
+
+#include <altivec.h>
+#include <signal.h>
+
+void 
+sig_ill_handler (int sig)
+{
+    exit(0);
+}
+
+typedef union
+{
+  float         f[4];
+  unsigned int  i[4];
+  vector float  v;
+} vec_float_t;
+
+void 
+check_vec_all_num ()
+{
+  vec_float_t a, b, c;
+
+  a.i[0] = 0xfffa5a5a;
+  a.f[1] = 1.0;
+  a.f[2] = 1.0;
+  a.f[3] = 1.0;
+
+  b.f[0] = 1.0;
+  b.f[1] = 1.0;
+  b.f[2] = 1.0;
+  b.f[3] = 1.0;
+
+  c.i[0] = 0xfffa5a5a;
+  c.i[1] = 0xfffa5a5a;
+  c.i[2] = 0xfffa5a5a;
+  c.i[3] = 0xfffa5a5a;
+
+  if (vec_all_numeric (a.v))
+    abort ();
+
+  if (vec_all_nan (a.v))
+    abort ();
+
+  if (!vec_all_numeric (b.v))
+    abort ();
+
+  if (vec_all_nan (b.v))
+    abort ();
+
+  if (vec_all_numeric (c.v))
+    abort ();
+
+  if (!vec_all_nan (c.v))
+    abort ();
+
+}
+
+void 
+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 signed int le = {-1, -1, 0, -1};
+
+  aux = vec_cmple (a, b);
+
+  if (!vec_all_eq (aux, le))
+    abort ();
+}
+
+
+int 
+main()
+{
+  /* Exit on systems without altivec.  */
+  signal (SIGILL, sig_ill_handler);
+  asm volatile ("vor 0,0,0");
+  signal (SIGILL, SIG_DFL);
+
+  check_cmple ();
+  check_vec_all_num ();
+  exit (0);
+}