Displaying 20 results from an estimated 5000 matches similar to: "[LLVMdev] sret on scalars"
2010 Aug 23
0
[LLVMdev] sret on scalars
On Aug 19, 2010, at 1:38 PM, Andrew Lenharth wrote:
> I am needing to return i128 as a shadow return due to abi issues on
> alpha. The problem I am running into is the code for doing that with
> scalars (currently only used for vectors, as far as I can tell) sets
> the sret on the parameter. If I just go this path, then I am setting
> sret on an integer pointer, which verify
2008 Jun 04
0
[LLVMdev] Status of the 2.3 release - volunteers needed.
On Jun 2, 2008, at 11:11 PM, Tanya Lattner wrote:
> Darwin/ppc:
> SingleSource/Benchmarks/CoyoteBench/fftbench [ CBE ]
>
From what I can see comparing 2.3 with TOT, the "cexp" function is
declared like this in 2.3:
declare i128 @cexp({double, double}* byval) nounwind
It used to be this:
declare void @cexp({double, double}* noalias sret, {double, double}*
byval)
2008 Jun 04
1
[LLVMdev] Status of the 2.3 release - volunteers needed.
> From what I can see comparing 2.3 with TOT, the "cexp" function is
> declared like this in 2.3:
>
> declare i128 @cexp({double, double}* byval) nounwind
>
> It used to be this:
>
> declare void @cexp({double, double}* noalias sret, {double, double}*
> byval) nounwind
The promotion from a void function with an sret argument to a function
returning
2015 Jul 13
2
[LLVMdev] __float128 (f128) calling convention bug on x86_64
Hello, I'm new to this mailing list and fixing llvm bugs for Android.
Can anyone point me to any previous discussion or work related to the
following bug?
https://llvm.org/bugs/show_bug.cgi?id=23897
I am testing my patch to llvm to make f128 values stay in SSE registers
instead of being split into two i64 values. I have tried to add a register
class FR128 to hold f128 values for the x86_64
2020 Feb 14
2
Function Return Legalization
Hi,
After removing support for the i64 type in the *CallingConv.td, sret-demotion is performed and we now have a store<(store 8, align 1)> DAG node being generated. Please refer to the attached dag_funcret.pdf DAG visualization.
My understanding is that, the second operand(CopyFromReg->Register %1, Register %0 back-up) in the store node is the memory location allocated for the i64 type
2010 May 17
1
[LLVMdev] Shadow returns
I need to return i128 and f128 via a ptr passed in as the first
argument to a function. I am not seeing something in llvm-abi.h to
let me do this. How do I make a scalar (not an aggregate) use a
shadow return? Similarly I need to pass those types by pointer,
(byval arguments?) and don't see an obvious way to do that.
Thanks
Andrew
2020 Feb 18
2
Function Return Legalization
Hi llvm-dev,
>> The CopyFromReg->CopyToReg->CopyFromReg sequence doesn’t have the chains set correctly: the second CopyFromReg’s input chain isn’t connected to the CopyToReg’s output chain. (This appears to be the same problem in both graphs.)
The DAG mentioned was generated by the SelectionDAGBuilder and as much as possible, we only modify the files within our target so I tried
2018 Jan 04
2
Options for custom CCState, CCAssignFn, and GlobalISel
On 4 January 2018 at 17:10, Daniel Sanders via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>> On 3 Jan 2018, at 14:00, Alex Bradbury via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> I haven't dug into the GlobalISel calling convention code much but I can comment on the MipsCCState.
Thanks for the insight Daniel, much appreciated.
>> * MipsCCState: adds bool
2015 Oct 06
2
SRET consistency between declaration and call site
On Oct 6, 2015, at 4:33 PM, Reid Kleckner via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> On Tue, Oct 6, 2015 at 1:21 PM, Joerg Sonnenberger via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> Can you give an example of where it would trigger in LTO and when should
> not?
>
> You could imagine that __muldc3 might be
2010 Jul 14
2
[LLVMdev] Question on sret
Dear All,
What is the purpose of the sret function parameter attribute? Does it
affect the calling convention used during code generation, is it a hint
to optimizations, or is it used for something else?
I'm currently working on automatic pool allocation; this transform
clones a function and adds extra parameters to the beginning of the
function's parameter list. This means that I
2018 Mar 05
1
Allow CallSlot optimization for throwing functions for sret arguments
Hi all,
in Rust we have a bug report about about a missed optimization which
one would expect CallSlot optimization to handle:
https://github.com/rust-lang/rust/issues/48533
The IR looks like this:
define void @bar(%S* noalias nocapture sret dereferenceable(16), void
(%S*)* nocapture nonnull) unnamed_addr #0 {
%3 = alloca %S, align 8
%4 = bitcast %S* %3 to i8*
call void
2010 Jul 14
0
[LLVMdev] Question on sret
On Wed, Jul 14, 2010 at 8:49 AM, John Criswell <criswell at uiuc.edu> wrote:
> Dear All,
>
> What is the purpose of the sret function parameter attribute? Does it
> affect the calling convention used during code generation, is it a hint
> to optimizations, or is it used for something else?
Both of the above; see LangRef.
> I'm currently working on automatic pool
2010 May 08
2
[LLVMdev] Should the function operand flag 'sret' match the flag in function declaration?
I have these two instructions, first one inside some procedure, second
one is an outside declaration.
Code verification passes and it runs, but incorrectly.
Every time I saw such situation coming from c++ compiler, attributes
'noalias sret' appear on both call and declaration.
Does such situation make sense, or (as I guess it is) a bug in verifier?
I think verifier should match at
2015 Jul 16
2
[LLVMdev] What does "noalias sret" mean?
Hi, all
When I compile the C code containing the next statement to LLVM,
*struct A const o = func(...);*
I got the next corresponding LLVM bytecode
*call void @func(%struct.A* noalias sret %o, ...)*
Could you tell me why function "func" with a return value
is changed to be one with a void return value and another
more parameter %o. Does "noalias sret" play a special role?
2011 Aug 12
1
[LLVMdev] Using sret AND thiscall calling convention
Hi all,
I am trying to generate LLVM IR that calls an external C++ function
returning a structure by copy:
vec3 vec3::Cross(const vec3& iV) const;
Here is the LLVM IR that I am generating for win32 ABI, which says that the
first parameter should be a pointer to the return value:
%vec3 = type <{ float, float, float }>
define void @CPP_Return_Struct(%vec3* %v1, %vec3* %v2) inlinehint
2009 Oct 05
5
[LLVMdev] Functions: sret and readnone
Hi all,
I'm currently building a DSL for a computer graphics project that is
not unlike NVIDIA's Cg. I have an intrinsic with the following
signature
float4 sample(texture tex, float2 coords);
that is translated to this LLVM IR code:
declare void @"sample"(%float4* noalias nocapture sret, %texture,
$float2) nounwind readnone
The type float4 is basically an array of four
2013 Mar 28
0
[LLVMdev] Fwd: [cfe-dev] Handling SRet on Windows x86
On Thu, Mar 28, 2013 at 8:55 AM, Reid Kleckner <rnk at google.com> wrote:
> On Thu, Mar 28, 2013 at 8:22 AM, Joe Groff <arcata at gmail.com> wrote:
>
>> On Wed, Mar 27, 2013 at 8:15 PM, Chandler Carruth <chandlerc at google.com>wrote:
>>
>>> This is why I suggest that the Windows ABI is whatever MSVC happens to
>>> do. The mingw ABI happens to
2010 May 08
0
[LLVMdev] Should the function operand flag 'sret' match the flag in function declaration?
On May 7, 2010, at 6:24 PM, Yuri wrote:
> I have these two instructions, first one inside some procedure, second
> one is an outside declaration.
> Code verification passes and it runs, but incorrectly.
Right, this code has undefined behavior.
> Every time I saw such situation coming from c++ compiler, attributes
> 'noalias sret' appear on both call and declaration.
2013 Mar 28
2
[LLVMdev] Fwd: [cfe-dev] Handling SRet on Windows x86
On Thu, Mar 28, 2013 at 8:22 AM, Joe Groff <arcata at gmail.com> wrote:
> On Wed, Mar 27, 2013 at 8:15 PM, Chandler Carruth <chandlerc at google.com>wrote:
>
>> This is why I suggest that the Windows ABI is whatever MSVC happens to
>> do. The mingw ABI happens to consist of a conjunction of what MSVC does for
>> C and what GCC on Linux does for C++. That is a
2011 Aug 12
1
[LLVMdev] Using sret AND thiscall calling convention
On Fri, Aug 12, 2011 at 1:11 AM, Damien Gleizes <gleizesd at gmail.com> wrote:
>
> Hi all,
>
> I am trying to generate LLVM IR that calls an external C++ function
> returning a structure by copy:
> vec3 vec3::Cross(const vec3& iV) const;
>
> Here is the LLVM IR that I am generating for win32 ABI, which says that the
> first parameter should be a pointer to the