diff options
author | Hartmut Penner <hpenner@de.ibm.com> | 2003-12-16 07:42:08 +0000 |
---|---|---|
committer | Hartmut Penner <hpenner@gcc.gnu.org> | 2003-12-16 07:42:08 +0000 |
commit | cbefa3c9a2b880ccab4954e7e0f8c8d571d89d31 (patch) | |
tree | 2a97321d42957f324b02362fa4beec1033096324 | |
parent | d1a0ec38115da4208e71540a0262d78722b2ea69 (diff) | |
download | gcc-cbefa3c9a2b880ccab4954e7e0f8c8d571d89d31.zip gcc-cbefa3c9a2b880ccab4954e7e0f8c8d571d89d31.tar.gz gcc-cbefa3c9a2b880ccab4954e7e0f8c8d571d89d31.tar.bz2 |
altivec.h (vec_cmple, [...]): Fix typo.
* altivec.h (vec_cmple, vec_all_numeric): Fix typo.
* testsuite/gcc.dg/altivec-10.c: Test for above.
From-SVN: r74675
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.h | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/altivec-10.c | 86 |
3 files changed, 95 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2cfcc88..45e05a8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h index d7718fe..c98d6ea 100644 --- a/gcc/config/rs6000/altivec.h +++ b/gcc/config/rs6000/altivec.h @@ -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 index 0000000..8d9223f --- /dev/null +++ b/gcc/testsuite/gcc.dg/altivec-10.c @@ -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); +} |