From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17510 invoked by alias); 13 Nov 2008 22:43:25 -0000 Received: (qmail 17473 invoked by uid 22791); 13 Nov 2008 22:43:24 -0000 X-Spam-Check-By: sourceware.org Received: from fk-out-0910.google.com (HELO fk-out-0910.google.com) (209.85.128.189) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 13 Nov 2008 22:42:27 +0000 Received: by fk-out-0910.google.com with SMTP id 19so1202116fkr.8 for ; Thu, 13 Nov 2008 14:42:23 -0800 (PST) Received: by 10.181.56.1 with SMTP id i1mr72564bkk.45.1226616142945; Thu, 13 Nov 2008 14:42:22 -0800 (PST) Received: from localhost.localdomain (ar15-93.dial-up.arnes.si [194.249.3.93]) by mx.google.com with ESMTPS id 21sm5427889fkx.13.2008.11.13.14.42.19 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 13 Nov 2008 14:42:21 -0800 (PST) Message-ID: <491CAD42.6060003@gmail.com> Date: Thu, 13 Nov 2008 22:54:00 -0000 From: Uros Bizjak User-Agent: Thunderbird 2.0.0.14 (X11/20080501) MIME-Version: 1.0 To: "Kaveh R. GHAZI" CC: Richard Guenther , Ralph Loader , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] Fix for PR 37809 and 37807 References: <20081022181234.2acf7548@i.geek.nz> <84fc9c000810220316t20257102t9ce3b53e95d3400b@mail.gmail.com> <20081105205605.20d170c4@i.geek.nz> <84fc9c000811050120u27692d32ra32c27d1eefc2cdf@mail.gmail.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------090006010309080300040901" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-11/txt/msg00607.txt.bz2 This is a multi-part message in MIME format. --------------090006010309080300040901 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1320 Kaveh R. GHAZI wrote: >>>>> 2008-10-19 Ralph Loader >>>>> >>>>> PR middle-end/37807, middle-end/37809 >>>>> * combine.c (force_to_mode): Do not process vector types. >>>>> >>>>> * rtlanal.c (nonzero_bits1): Do not process vector types. >>>>> (num_sign_bit_copies1): Likewise. >>>>> > > The testcase mmx-8.c crashes on the 4.3/4.2 branches, e.g. > http://gcc.gnu.org/ml/gcc-testresults/2008-11/msg01056.html > The fix for rtl-optimization/36438 [1], [2] needs to be backported to 4.3 and 4.2 branch. [1] http://gcc.gnu.org/PR36438 [2] http://gcc.gnu.org/ml/gcc-patches/2008-06/msg00268.html 2008-11-13 Uros Bizjak Backport from mainline: 2008-06-06 Uros Bizjak PR rtl-optimization/36438 * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early for vector shifts with constant scalar shift operands. testsuite/ChangeLog: 2008-11-13 Uros Bizjak Backport from mainline: 2008-06-06 Uros Bizjak PR rtl-optimization/36438 * gcc.target/i386/pr36438.c Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32} and committed to 4.3 branch. It will be committed to 4.2 after regression test ends. Uros. --------------090006010309080300040901 Content-Type: text/plain; name="p.diff.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="p.diff.txt" Content-length: 1115 Index: cse.c =================================================================== --- cse.c (revision 141833) +++ cse.c (working copy) @@ -3505,6 +3505,11 @@ && exact_log2 (- INTVAL (const_arg1)) >= 0))) break; + /* ??? Vector mode shifts by scalar + shift operand are not supported yet. */ + if (is_shift && VECTOR_MODE_P (mode)) + break; + if (is_shift && (INTVAL (inner_const) >= GET_MODE_BITSIZE (mode) || INTVAL (inner_const) < 0)) Index: testsuite/gcc.target/i386/pr36438.c =================================================================== --- testsuite/gcc.target/i386/pr36438.c (revision 0) +++ testsuite/gcc.target/i386/pr36438.c (revision 0) @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mmmx" } */ + +#include + +extern __m64 SetS16 (unsigned short, unsigned short, + unsigned short, unsigned short); + +void +foo (__m64 * dest) +{ + __m64 mask = SetS16 (0x00FF, 0xFF00, 0x0000, 0x00FF); + + mask = _mm_slli_si64 (mask, 8); + mask = _mm_slli_si64 (mask, 8); + + *dest = mask; + + _mm_empty (); +} --------------090006010309080300040901--