[LLVMdev] Stack alignment on X86 AVX seems incorrect

Evandro Menezes emenezes at codeaurora.org
Fri Mar 2 08:32:32 PST 2012


Cameron,

Figure 3.3 on page 16 of www.x86-64.org/documentation/abi.pdf is not 
normative.  See foot note 7 in the same page.  Figure 3.4 on page 21 
confirms that the use of a frame-pointer is optional.

So, if one doesn't use ENTER in the prologue and uses RSP to access 
local variables, RBP may be used as a calee-saved GPR.

-- 
Evandro Menezes          Austin, TX          emenezes at codeaurora.org
Qualcomm Innovation Center, Inc is a member of the Code Aurora Forum


On 03/02/12 10:17, Cameron McInally wrote:
>     At least for 32bit x86 reserving another register as alternative frame
>     pointer is very heavy. The above would allow normal spill logic to
>     decide when to keep a reference in register and when not. It also reuses
>     existing functionality as much as possible.
>
>
> Hi Joerg,
>
> Yes, this was a problem in my implementation also. Empirically, for the
> chips I work on, reserving the extra frame register was shown to be a
> win. But, of course, I am sure this win is not universal.
>
> I did receive permission to share my work with the community. Although,
> without discovering a creative solution to the extra frame register
> problem, I doubt my patch would be wanted. If anyone is motivated to
> work out this issue, I would be happy to help.
>
> My current thinking is that an emergency spill slot could be set aside
> to hold the original, ABI conforming, frame pointer. Not an ideal
> solution, but in my situation where I must cover any code a user throws
> at me, breaking the ABI and playing with the stack is preferred.
>
> Thanks,
> Cameron
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list