[LLVMdev] Spilled variables using unaligned moves

Nicolas Capens nicolas at capens.net
Mon Jul 14 13:09:53 PDT 2008


This is on Windows / MSVC++ 2005. I'll file a bug.

 

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/20080714/ace0cca1/attachment.html>


More information about the llvm-dev mailing list