From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 112354 invoked by alias); 22 Oct 2015 13:40:18 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 112019 invoked by uid 48); 22 Oct 2015 13:40:14 -0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/67609] [5/6 Regression] Generates wrong code for SSE2 _mm_load_pd Date: Thu, 22 Oct 2015 13:40:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Version: 5.2.1 X-Bugzilla-Keywords: ra, wrong-code X-Bugzilla-Severity: major X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 5.3 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-10/txt/msg01856.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67609 --- Comment #20 from Richard Biener --- (In reply to Jeffrey A. Law from comment #19) > Preserving the upper part when setting the low part would be expressed via > STRICT_LOW_PART. At least that's what I'd expect to see. According to documentation this is only needed for smaller-than-word subregs: "When used as an lvalue, @code{subreg} is a word-based accessor. Storing to a @code{subreg} modifies all the words of @var{reg} that overlap the @code{subreg}, but it leaves the other words of @var{reg} alone. for the case in question, while strict-low-part: "When storing to a normal @code{subreg} that is smaller than a word, the other bits of the referenced word are usually left in an undefined state. This laxity makes it easier to generate efficient code for such instructions. To represent an instruction that preserves all the bits outside of those in the @code{subreg}, use @code{strict_low_part} or @code{zero_extract} around the @code{subreg}.