[LLVMdev] Stack alignment on X86 AVX seems incorrect
Cameron McInally
cameron.mcinally at nyu.edu
Thu Mar 1 13:18:40 PST 2012
Hi Elena,
You're correct. LLVM does not align the stack to 32-bytes for AVX and
unaligned moves should be used for YMM spills.
I wrote some code to align the stack to 32-bytes when AVX spills are
present; it does break the x86-64 ABI though. If upstream would be
interested in this code, I can arrange with my employer to send a patch to
the mailing list.
-Cameron
On Mar 1, 2012, at 4:09 PM, <llvmdev-request at cs.uiuc.edu> wrote:
Message: 2
Date: Thu, 1 Mar 2012 18:16:46 +0000
From: "Demikhovsky, Elena" <elena.demikhovsky at intel.com>
Subject: [LLVMdev] Stack alignment on X86 AVX seems incorrect
To: "llvmdev at cs.uiuc.edu" <llvmdev at cs.uiuc.edu>
Message-ID:
<A0DC88CEB3010344830D52D66533DA8E0C2E7A at HASMSX103.ger.corp.intel.com>
Content-Type: text/plain; charset="windows-1252"
./llc -mattr=+avx -stack-alignment=16 < basic.ll | grep movaps | grep ymm |
grep rbp
vmovaps -176(%rbp), %ymm14
vmovaps -144(%rbp), %ymm11
vmovaps -240(%rbp), %ymm13
vmovaps -208(%rbp), %ymm9
vmovaps -272(%rbp), %ymm7
vmovaps -304(%rbp), %ymm0
vmovaps -112(%rbp), %ymm0
vmovaps -80(%rbp), %ymm1
vmovaps -112(%rbp), %ymm0
vmovaps -80(%rbp), %ymm0
vmovaps -176(%rbp), %ymm15
vmovaps -144(%rbp), %ymm0
vmovaps -240(%rbp), %ymm0
vmovaps -208(%rbp), %ymm0
vmovaps -272(%rbp), %ymm0
vmovaps -304(%rbp), %ymm0
vmovaps should not access stack if it is not aligned to 32
- Elena
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120301/91d47a80/attachment.html>
More information about the llvm-dev
mailing list