[LLVMdev] x86 Frame Pointer with AVX

Cameron McInally cameron.mcinally at nyu.edu
Mon Oct 22 14:29:20 PDT 2012

Hey guys,

I found a performance regression in the X86 backend related to PR10884.

In trunk, the frame pointer is always set up when an AVX register is used
in a function. This is done in case 32-byte spill code is later introduced
into the function and hence dynamic stack realignment is needed. Needless
to say, it's a big hammer. This regression seems particularly painful in
small-to-medium sized routines that are called frequently in some codes.

Is this issue already known? Is there a plan to fix this regression? If
not, does anyone have a suggestion on the best way to remedy this issue?

I have attached the IR and C code for a trivial test which exhibits the
problem. The IR was produced by clang-421.0.60.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121022/ecda41c8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.ll
Type: application/octet-stream
Size: 1486 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121022/ecda41c8/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.c
Type: text/x-csrc
Size: 136 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121022/ecda41c8/attachment.c>

More information about the llvm-dev mailing list