[LLVMdev] Another memory alignment issue with SSE operations

Peter Newman peter at uformia.com
Sat Jul 20 01:58:53 PDT 2013


I discovered the alignstack(16) attribute, and am now using this in our 
code.

This avoids this crash, and as a bonus, causes the resulting code to use 
movapd instead of movupd - so is potentially faster code, too.

--
Peter N

On 20/07/2013 6:08 PM, Peter Newman wrote:
> Unfortunately, I've ran into a second issue where addpd is being 
> performed on memory that isn't 16 byte aligned. Again, this only 
> happens if the createJIT OptLevel is set to Default (vs None).
>
> According to
> http://www.jaist.ac.jp/iscenter-new/mpc/altix/altixdata/opt/intel/vtune/doc/users_guide/mergedProjects/analyzer_ec/mergedProjects/reference_olh/mergedProjects/instructions/instruct32_hh/vc8a.htm 
>
> that will cause a GPF.
>
> I've attached the LLVM IR and a copy of the Disassembly this results 
> in. The crash occurs at 00370872
>
> At the time of the crash, ESP is set to 0018EEF8 - this results in a 
> value is not 16 byte aligned. I notice that the offset is aligned though.
>
> The crash occurs on the first instance of addpd applied to the stack 
> (as I understand ESP is used for).
>
> There is also raises the question of would it be worth requiring 
> alignment of the function stack to improve performance (assuming 
> movapd is faster then movupd). I'm not expecting LLVM to recognize 
> this (although it would be neat) but is this something worth setting 
> ourselves, knowing we're going to be using mostly SSE instructions? 
> And how would we do that?
>
> -- 
> Peter N
>
>
> _______________________________________________
> 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/20130720/1062ceec/attachment.html>


More information about the llvm-dev mailing list