This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/58110] New: Useless GPR push and pop when only xmm registers are used.
- From: "neleai at seznam dot cz" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 09 Aug 2013 12:38:28 +0000
- Subject: [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used.
- Auto-submitted: auto-generated
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