diff options
| -rw-r--r-- | gcc/ChangeLog | 11 | ||||
| -rw-r--r-- | gcc/combine.c | 3 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 12 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/vect/pr33846.c | 22 |
4 files changed, 42 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8d8a9f..3fb2fef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-10-23 Uros Bizjak <ubizjak@gmail.com> + + PR rtl-optimization/33846 + * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes. + 2007-10-23 Dorit Nuzman <dorit@il.ibm.com> PR tree-optimization/33860 @@ -32,8 +37,8 @@ PR tree-optimization/33834 PR tree-optimization/33835 - * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE stmts - need to be checked for success seperately. + * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE + stmts need to be checked for success seperately. * tree-vect-transform.c (vectorizable_call, vectorizable_conversion): Remove the check that stmt is not LIVE. (vectorizable_assignment, vectorizable_induction): Likewise. @@ -899,7 +904,7 @@ IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128, IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require immediate shift value. - config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32, + * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32, _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument. Remove macros for !__OPTIMIZE__ case. diff --git a/gcc/combine.c b/gcc/combine.c index dae0baf..cfd0ed1 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -9343,6 +9343,9 @@ simplify_shift_const_1 (enum rtx_code code, enum machine_mode result_mode, break; case NOT: + if (VECTOR_MODE_P (mode)) + break; + /* Make this fit the case below. */ varop = gen_rtx_XOR (mode, XEXP (varop, 0), GEN_INT (GET_MODE_MASK (mode))); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a1bf668..c68d6c2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,10 @@ -2007-10-23 Martin Michlmayr <tbm@cyrius.com> +2007-10-23 Martin Michlmayr <tbm@cyrius.com> + Uros Bizjak <ubizjak@gmail.com> + + PR rtl-optimization/33846 + * gcc.dg/vect/pr33846.c: New testcase. + +2007-10-23 Martin Michlmayr <tbm@cyrius.com> Dorit Nuzman <dorit@il.ibm.com> PR tree-optimization/33860 @@ -8,13 +14,13 @@ 2007-10-23 Tehila Meyzels <tehila@il.ibm.com> Revital Eres <eres@il.ibm.com> - * testsuite/gcc.dg/sms-2.c: New testcase. + * testsuite/gcc.dg/sms-2.c: New testcase. 2007-10-22 David S. Miller <davem@davemloft.net> * gcc.dg/globalreg-1.c: New test. -2007-10-22 Martin Michlmayr <tbm@cyrius.com> +2007-10-22 Martin Michlmayr <tbm@cyrius.com> Dorit Nuzman <dorit@il.ibm.com> PR tree-optimization/33834 diff --git a/gcc/testsuite/gcc.dg/vect/pr33846.c b/gcc/testsuite/gcc.dg/vect/pr33846.c new file mode 100644 index 0000000..f31e207 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr33846.c @@ -0,0 +1,22 @@ +/* Testcase by Martin Michlmayr <tbm@cyrius.com> */ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_shift } */ + +int clamp_val (int i) +{ + return ~i >> 31; +} + +void _mix_some_samples (long buf, int *mix_buffer, int mix_size) +{ + int i; + signed int *p = mix_buffer; + for (i = mix_size ; i > 0; i--) + { + *((short *) buf) = clamp_val ((*p) + 0x800000); + buf += 2; + p++; + } +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ |
