[LLVMdev] Calling conventions for YMM registers on AVX

Demikhovsky, Elena elena.demikhovsky at intel.com
Sun Jan 8 23:18:12 PST 2012


I'll explain what we see in the code.
1. The caller saves XMM registers across the call if needed (according to DEFS definition).
YMMs are not in the set, so caller does not take care.

2. The callee preserves XMMs but works with YMMs and clobbering them.
3. So after the call, the upper part of YMM is gone.

- Elena
-----Original Message-----
From: Bruno Cardoso Lopes [mailto:bruno.cardoso at gmail.com] 
Sent: Monday, January 09, 2012 05:19
To: Demikhovsky, Elena
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] Calling conventions for YMM registers on AVX

Hi,

> What is the calling conventions for YMM. According to documents I saw till now, the YMMs are scratch and not saved in callee.
> This is also the default behavior of the Intel Compiler.

x86_64 Non-windows targets use the rules defined in the x86_64 abi!

> In X86InstrControl.td the YMMs are not in "defs" set of call.

The XMMs are subregisters of YMMs, and they are in the list, that
should be sufficient for clobbering the YMM ones.

-- 
Bruno Cardoso Lopes
http://www.brunocardoso.cc
---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.





More information about the llvm-dev mailing list