Displaying 3 results from an estimated 3 matches for "test600".
Did you mean:
test60
2010 Apr 02
2
[LLVMdev] Problem returning aggregate struct (complex number) by value
I'm trying to return an aggregate structure (a complex number, really)
containing two 32-bit floats or two 64-bit doubles, by value. LLVM 2.6
compiled as 64-bit on OSX 10.6/x86-64.
The IR I generate for a simple test case looks like this (float case):
%0 = type { float, float }
define %0 @test600() {
entry:
ret %0 { float 4.200000e+01, float 3.500000e+01 }
}
Running that through llc, the x86-64 assembly looks like this (abbreviated):
movss LCPI72_0(%rip), %xmm0
movss LCPI72_1(%rip), %xmm1
ret
Now, if I write a C function that does the same thing:
struct complex_float {
float...
2010 Apr 02
0
[LLVMdev] Problem returning aggregate struct (complex number) by value
Hi Andrew,
> %0 = type { float, float }
>
> define %0 @test600() {
> entry:
> ret %0 { float 4.200000e+01, float 3.500000e+01 }
> }
>
>
> Running that through llc, the x86-64 assembly looks like this (abbreviated):
unfortunately the x86-64 ABI says that complex numbers are *not* passed the
same as a struct containing two floats. Your LL...
2010 Apr 02
1
[LLVMdev] Problem returning aggregate struct (complex number) by value
Duncan Sands wrote:
> Hi Andrew,
>
>> %0 = type { float, float }
>>
>> define %0 @test600() {
>> entry:
>> ret %0 { float 4.200000e+01, float 3.500000e+01 }
>> }
>>
>>
>> Running that through llc, the x86-64 assembly looks like this (abbreviated):
>
> unfortunately the x86-64 ABI says that complex numbers are *not* passed the
> same as a...