From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22763 invoked by alias); 9 Aug 2013 12:38:33 -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 22394 invoked by uid 48); 9 Aug 2013 12:38:29 -0000 From: "neleai at seznam dot cz" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used. Date: Fri, 09 Aug 2013 12:38:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: neleai at seznam dot cz X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: 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: 2013-08/txt/msg00532.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110 Bug ID: 58110 Summary: Useless GPR push and pop when only xmm registers are used. Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: neleai at seznam dot cz Hi,attached code generates extra push/pop rbx pair while there is no gpr register assigned in segment between them. This was generated by head xgcc -O3. A gcc-4.7 has similar issues with attached program. pushq %rbx .cfi_def_cfa_offset 16 .cfi_offset 3, -16 movdqu (%rsi), %xmm15 movdqu -16(%rsi,%rdx), %xmm14 movdqu 16(%rsi), %xmm13 movdqu -32(%rsi,%rdx), %xmm12 movdqu 32(%rsi), %xmm11 movdqu -48(%rsi,%rdx), %xmm10 movdqu 48(%rsi), %xmm9 movdqu -64(%rsi,%rdx), %xmm8 movdqu 64(%rsi), %xmm7 movdqu -80(%rsi,%rdx), %xmm6 movdqu 80(%rsi), %xmm5 movdqu -96(%rsi,%rdx), %xmm4 movdqu 96(%rsi), %xmm3 movdqu -112(%rsi,%rdx), %xmm2 movdqu 112(%rsi), %xmm1 movdqu -128(%rsi,%rdx), %xmm0 movdqu %xmm15, (%rdi) movdqu %xmm14, -16(%rdi,%rdx) movdqu %xmm13, 16(%rdi) movdqu %xmm12, -32(%rdi,%rdx) movdqu %xmm11, 32(%rdi) movdqu %xmm10, -48(%rdi,%rdx) movdqu %xmm9, 48(%rdi) movdqu %xmm8, -64(%rdi,%rdx) movdqu %xmm7, 64(%rdi) movdqu %xmm6, -80(%rdi,%rdx) movdqu %xmm5, 80(%rdi) movdqu %xmm4, -96(%rdi,%rdx) movdqu %xmm3, 96(%rdi) movdqu %xmm2, -112(%rdi,%rdx) movdqu %xmm1, 112(%rdi) movdqu %xmm0, -128(%rdi,%rdx) popq %rbx