[LLVMdev] Spilled variables using unaligned moves
Nicolas Capens
nicolas at capens.net
Mon Jul 14 07:43:57 PDT 2008
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080714/2854bfae/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: fibonacci.cpp
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080714/2854bfae/attachment.ksh>
More information about the llvm-dev
mailing list