[LLVMdev] Calling conventions for YMM registers on AVX

Jakob Stoklund Olesen stoklund at 2pi.dk
Mon Jan 9 10:00:08 PST 2012


On Jan 8, 2012, at 11:18 PM, Demikhovsky, Elena wrote:

> 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.

This is not how the register allocator works. It saves the registers holding values, it doesn't care which alias is clobbered.

Are you saying that only the xmm part of a ymm register gets spilled before a call?

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

Are you on Windows? As Bruno said, all xmm and ymm registers are call-clobbered on non-Windows platforms.

/jakob




More information about the llvm-dev mailing list