From 8c98e9d03d115da3dd1c238e7a24ad643aacf148 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Mon, 20 Jun 2005 17:59:35 +0000 Subject: [PATCH] re PR target/22077 (vec_all_eq does not produce good result) PR 22077. Oked by Roger Sayle. From-SVN: r101211 --- gcc/ChangeLog | 6 ++++++ gcc/combine.c | 5 +++++ gcc/testsuite/gcc.dg/altivec-nomfcr.c | 10 ++++++++++ 3 files changed, 21 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/altivec-nomfcr.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92c4299..3f64b73 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-06-20 Roger Sayle +2005-06-20 Fariborz Jahanian + + * combine.c (simplify_set): Simplify setting of CC register + by removing redundant compare with 0 on RHS. + 2005-06-20 Jan Beulich * config/i386/netware-libgcc.def: Update copyright. diff --git a/gcc/combine.c b/gcc/combine.c index c4e6f95..e10d29f 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -5274,6 +5274,11 @@ simplify_set (rtx x) SUBST (SET_SRC (x), gen_rtx_COMPARE (compare_mode, op0, op1)); src = SET_SRC (x); } + else if (GET_MODE (op0) == compare_mode && op1 == const0_rtx) + { + SUBST(SET_SRC (x), op0); + src = SET_SRC (x); + } else { /* Otherwise, update the COMPARE if needed. */ diff --git a/gcc/testsuite/gcc.dg/altivec-nomfcr.c b/gcc/testsuite/gcc.dg/altivec-nomfcr.c new file mode 100644 index 0000000..5c8c96b --- /dev/null +++ b/gcc/testsuite/gcc.dg/altivec-nomfcr.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target powerpc-*-* } } */ +/* { dg-options "-O3 -maltivec" } */ +/* { dg-final { scan-assembler-not "mfcr" } } */ + +#include + +int foo(vector float x, vector float y) { + if (vec_all_eq(x,y)) return 3245; + else return 12; +} -- 2.7.4