Displaying 7 results from an estimated 7 matches for "calling_conventions".
2014 Mar 02
3
[LLVMdev] [RFC] The coding standard for "struct" should be relaxed or removed
On Mar 1, 2014, at 7:15 PM, Chandler Carruth <chandlerc at google.com> wrote:
> On Sat, Mar 1, 2014 at 5:59 PM, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
> The current guidelines [1] on the use of the struct keyword are too
> restrictive and apparently ignored. They limit the use of struct to
> PODs, citing broken compilers.
>
> The guidelines are
2012 Jan 09
3
[LLVMdev] Calling conventions for YMM registers on AVX
...s? As Bruno said, all xmm and ymm registers are call-clobbered on non-Windows platforms.
This thread has lots of interesting information: http://software.intel.com/en-us/forums/showthread.php?t=59291
I wasn't able to find a formal Win64 ABI spec, but according to http://www.agner.org/optimize/calling_conventions.pdf, xmm6-xmm15 are callee-saved on win64, but the high bits in ymm6-ymm15 are not.
That's not currently correctly modelled in LLVM. To fix it, create a pseudo-register YMMHI_CLOBBER that aliases ymm6-ymm15. Then add YMMHI_CLOBBER to the registers clobbered by WINCALL64*.
/jakob
2009 Sep 26
0
[LLVMdev] MinGW/MSVC++ uses different ABI for sret
...n as the sret issue. Is there any LLVM
> target where aggregates are "really" passed by value?
This is not entirely true. MSVC never uses pointers for passing a
class/struct by value; GCC uses a pointer if the class/struct is not a
POD.
This is listed on http://www.agner.org/optimize/calling_conventions.pdf
page 19.
--
Óscar
2012 Jan 09
0
[LLVMdev] Calling conventions for YMM registers on AVX
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
2009 Sep 26
2
[LLVMdev] MinGW/MSVC++ uses different ABI for sret
Hello Eli.
Eli Friedman <eli.friedman at gmail.com> writes:
> On Fri, Sep 25, 2009 at 2:41 PM, Óscar Fuentes <ofv at wanadoo.es> wrote:
>> I filed a bug yesterday ( http://llvm.org/bugs/show_bug.cgi?id=5046 )
>> and Anton kindly explained that LLVM is doing the right thing as per the
>> ABI (the GCC ABI, I'll add).
>>
>> 1. Is there a LLVM way of
2012 Jan 09
2
[LLVMdev] Calling conventions for YMM registers on AVX
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
2012 Jan 10
0
[LLVMdev] Calling conventions for YMM registers on AVX
...s? As Bruno said, all xmm and ymm registers are call-clobbered on non-Windows platforms.
This thread has lots of interesting information: http://software.intel.com/en-us/forums/showthread.php?t=59291
I wasn't able to find a formal Win64 ABI spec, but according to http://www.agner.org/optimize/calling_conventions.pdf, xmm6-xmm15 are callee-saved on win64, but the high bits in ymm6-ymm15 are not.
That's not currently correctly modelled in LLVM. To fix it, create a pseudo-register YMMHI_CLOBBER that aliases ymm6-ymm15. Then add YMMHI_CLOBBER to the registers clobbered by WINCALL64*.
/jakob
------------...