https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34011
--- Comment #9 from Andrew Pinski ---
good function:
.L3:
movdqu (%rdi,%rax), %xmm0
pslld %xmm1, %xmm0
movups %xmm0, (%rsi,%rax)
addq$16, %rax
cmpq$1024, %rax
jne .L3
bad function:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34011
Uros Bizjak ubizjak at gmail dot com changed:
What|Removed |Added
Last reconfirmed|2009-09-12 20:02:13 |2012-01-20 20:02:13
--- Comment #7 from rguenth at gcc dot gnu dot org 2009-09-17 09:08 ---
The problem is now back to the original one.
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #6 from rguenth at gcc dot gnu dot org 2009-09-16 08:50 ---
Subject: Bug 34011
Author: rguenth
Date: Wed Sep 16 08:50:46 2009
New Revision: 151740
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=151740
Log:
2009-09-16 Richard Guenther rguent...@suse.de
PR
--- Comment #4 from rguenth at gcc dot gnu dot org 2009-09-15 14:07 ---
With the alias issue fixed I get
good:
.LFB0:
.cfi_startproc
movdsrcshift(%rip), %xmm1
xorl%eax, %eax
.p2align 4,,10
.p2align 3
.L2:
movdqu (%rdi,%rax),
--- Comment #5 from rguenth at gcc dot gnu dot org 2009-09-15 14:40 ---
Which is likely because it decides to allocate $cx for the load destination
(operand for the scalar shift) and then needs to re-load it to $xmm? for the
vector shift. The placement of the re-load inside the loop is
--- Comment #3 from rguenth at gcc dot gnu dot org 2009-09-12 20:02 ---
srcshift is not moved out of the loop because we think the store to dstdata may
alias it. I'll fix that.
Index: tree-ssa-alias.c
===
---