[LLVMdev] Spilled variables using unaligned moves
Nicolas Capens
nicolas at capens.net
Tue Jul 15 03:21:40 PDT 2008
Hi Evan,
Could you maybe point me to the source files where this issue might
originate? I'd like to learn more about LLVM's innards but so far I've just
scraped the surface and I don't know where what phase of instruction
selection / register allocation / stack layout / etc. happens.
If I understand correctly this issue might be fixed by moving stack pointer
alignment before register allocation? Is this something that might be
reasonably straightforward or are there complicated dependencies involved?
Thanks again,
Nicolas
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Evan Cheng
Sent: Monday, 14 July, 2008 20:35
To: LLVM Developers Mailing List
Cc: anton at korobeynikov.info
Subject: Re: [LLVMdev] Spilled variables using unaligned moves
This is on Windows / Cygwin? I think the dynamic stack pointer re-alignment
doesn't happen until post- register allocation.
Assuming there aren't other instructions between the prologue and the first
movups that mess up esp (there shouldn't), this is indeed a bug. Please file
a bug and attach a bc file. Thanks.
Evan
On Jul 14, 2008, at 7:43 AM, Nicolas Capens wrote:
Hi all,
It looks like vector spills don't use aligned moves even though the stack is
aligned. This seems like an optimization opportunity.
The attached replacement of fibonacci.cpp generates x86 code like this:
03A70010 push ebp
03A70011 mov ebp,esp
03A70013 and esp,0FFFFFFF0h
03A70019 sub esp,1A0h
...
03A7006C movups xmmword ptr [esp+180h],xmm7
...
03A70229 mulps xmm1,xmmword ptr [esp+180h]
...
03A70682 movups xmm0,xmmword ptr [esp+180h]
Note how stores and loads use unaligned moves while it could use aligned
moves. It's also interesting that the multiply does correctly assume the
stack to be 16-byte aligned.
Is there something I'm doing wrong (again), or is this already known?
Thanks a lot,
Nicolas Capens
<fibonacci.cpp>
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080715/e1f55b84/attachment.html>
More information about the llvm-dev
mailing list