re PR target/63335 (GCC:failures for vector double on calls to bif vec_[all|any]_[nge|nle])
[gcc] 2014-09-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com> PR target/63335 * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Exclude VSX_BUILTIN_XVCMPGEDP_P from special handling. [gcc/testsuite] 2014-09-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com> PR target/63335 * gcc.target/powerpc/pr63335.c: New test. From-SVN: r215599
This commit is contained in:
parent
6597738a3a
commit
eb1f7a0a3d
4 changed files with 43 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-09-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
PR target/63335
|
||||
* config/rs6000/rs6000-c.c (altivec_build_resolved_builtin):
|
||||
Exclude VSX_BUILTIN_XVCMPGEDP_P from special handling.
|
||||
|
||||
2014-09-25 Alexander Ivchenko <alexander.ivchenko@intel.com>
|
||||
Maxim Kuznetsov <maxim.kuznetsov@intel.com>
|
||||
Anna Tikhonova <anna.tikhonova@intel.com>
|
||||
|
|
|
@ -4267,7 +4267,8 @@ altivec_build_resolved_builtin (tree *args, int n,
|
|||
argument) is reversed. Patch the arguments here before building
|
||||
the resolved CALL_EXPR. */
|
||||
if (desc->code == ALTIVEC_BUILTIN_VEC_VCMPGE_P
|
||||
&& desc->overloaded_code != ALTIVEC_BUILTIN_VCMPGEFP_P)
|
||||
&& desc->overloaded_code != ALTIVEC_BUILTIN_VCMPGEFP_P
|
||||
&& desc->overloaded_code != VSX_BUILTIN_XVCMPGEDP_P)
|
||||
{
|
||||
tree t;
|
||||
t = args[2], args[2] = args[1], args[1] = t;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-09-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
PR target/63335
|
||||
* gcc.target/powerpc/pr63335.c: New test.
|
||||
|
||||
2014-09-25 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/61945
|
||||
|
|
30
gcc/testsuite/gcc.target/powerpc/pr63335.c
Normal file
30
gcc/testsuite/gcc.target/powerpc/pr63335.c
Normal file
|
@ -0,0 +1,30 @@
|
|||
/* { dg-do run { target { powerpc64*-*-* } } } */
|
||||
/* { dg-require-effective-target powerpc_vsx_ok } */
|
||||
/* { dg-options "-mvsx" } */
|
||||
|
||||
#include <altivec.h>
|
||||
|
||||
void abort (void);
|
||||
|
||||
vector double vec = (vector double) {99.0, 99.0};
|
||||
|
||||
int main() {
|
||||
|
||||
int actual = vec_all_nge(vec, vec);
|
||||
if ( actual != 0)
|
||||
abort();
|
||||
|
||||
actual = vec_all_nle(vec, vec);
|
||||
if ( actual != 0)
|
||||
abort();
|
||||
|
||||
actual = vec_any_nge(vec, vec);
|
||||
if ( actual != 0)
|
||||
abort();
|
||||
|
||||
actual = vec_any_nle(vec, vec);
|
||||
if ( actual != 0)
|
||||
abort();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue