Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] Lowering formal pointer arguments"
2006 Nov 15
0
[LLVMdev] LowerCALL (TargetLowering)
Hi Nickhil,
The Legalizer expects lower'd call is the node that produce the same
number of values as the non-lowered node. That's what the assertion
is checking.
Take a look at the LowerCall routine for any other targets. You will
see that in the non-void function case, it returns a MERGE_VALUES,
i.e. all the results merged along with the chain.
Cheers,
Evan
On Nov 15, 2006, at
2006 Nov 15
2
[LLVMdev] LowerCALL (TargetLowering)
Hi,
I am trying to write a LowerCALL() function for my (custom) target ISA.
All I need to do is map a CALL instruction directly onto an SDNode that
takes an equal number of arguments (very much alike intrinsics, except
that these are custom to my target.) I do not need to implement any call
sequences, stack frames etc.
I get the following assertion failure:
llc: LegalizeDAG.cpp:834:
2006 Nov 15
1
[LLVMdev] LowerCALL (TargetLowering)
Hi Evan,
On Wed, Nov 15, 2006 at 10:17 -0800, Evan Cheng wrote:
> Hi Nickhil,
>
> The Legalizer expects lower'd call is the node that produce the same
> number of values as the non-lowered node. That's what the assertion
> is checking.
>
> Take a look at the LowerCall routine for any other targets. You will
> see that in the non-void function case, it
2013 Jul 02
1
[LLVMdev] Problem selecting the correct registers for a calling convention
Hello Job,
I managed to resolve this same problem by using custom C++ code since as
you mentioned
the isSplit flag doesn't help here. There are 2 ways to analyze the
arguments of a function:
1) You can get a Function pointer in LowerFormalArguments, and in LowerCall
only when Callee can by dyn_casted to a GlobalAddressSDNode. By having this
pointer you can then do:
for
2007 Jun 29
0
[LLVMdev] How to call native functions from bytecode run in JIT?
Hi Jan,
If I recall correctly, in Linux you get the message:
PPCJITInfo.cpp:382: failed assertion `ResultPtr >= -(1 << 23) &&
ResultPtr < (1 << 23) && "Relocation out of range!"'
Right? But on OS X you don't have this messsage?
Here's a temporary fix until I find time to investigate on this:
In function PPCISelLowering::LowerCALL,
2011 Mar 18
2
[LLVMdev] Text or Data symbol
I am again calling for help from LLVM developers ;)
For my DSP backend, at the lowering stage and also at the AsmPrinter stage,
I need to know if a GlobalAddress is a code or a data address.
So I tried at the lowering stage to use:
GlobalAddressSDNode *GSDN = cast<GlobalAddressSDNode>(Op);
const GlobalValue *GV = GSDN->getGlobal();
GV->hasSection() and GV->getSection()
But the
2011 Mar 21
0
[LLVMdev] Text or Data symbol
I reply to myself... I didn't go in the right direction in my previous
email.
There is an easy way to tell if a GlobalValue corresponds to data or code:
const GlobalValue *GV;
if(Function::classof(GV))
... // process the global value as a function
else
... // process the global value as data
Damien
On Fri, Mar 18, 2011 at 3:16 PM, Damien Vincent <damien.llvm at
2007 Jun 30
1
[LLVMdev] How to call native functions from bytecode run in JIT?
Hi,
> If I recall correctly, in Linux you get the message:
>
> PPCJITInfo.cpp:382: failed assertion `ResultPtr >= -(1 << 23) &&
> ResultPtr < (1 << 23) && "Relocation out of range!"'
>
>
> Right? But on OS X you don't have this messsage?
Not exactly. There seem to be two problems. Your patch fixes one of
them: in OS X I
2011 Mar 21
1
[LLVMdev] Text or Data symbol
On 3/21/11 2:00 PM, Damien Vincent wrote:
> I reply to myself... I didn't go in the right direction in my previous
> email.
>
> There is an easy way to tell if a GlobalValue corresponds to data or code:
> const GlobalValue *GV;
> if(Function::classof(GV))
> ... // process the global value as a function
> else
> ... // process the global value as data
>
>
2011 Apr 02
0
[LLVMdev] Callee prototype info in LowerCall()
Hello, I'm having trouble getting the function prototype of an
ExternalSymbolSDNode inside TargetLowering::LowerCall(), this way i could
get the original argument sizes before they're legalized into smaller parts.
I need this sort of information because depending on the originaltypes of
the arguments i need to use some regs or others. I tried using the isSplit
flag in ArgFlagsTy but it
2008 Feb 15
1
[LLVMdev] LLVM2.2 x64 JIT trouble on VStudio build
Hey Evan,
At the point of the instructions you suggested I step through, X86ISelLowering has this state:
- this 0x00000000005fe728 {VarArgsFrameIndex=-842150451 RegSaveFrameIndex=-842150451 VarArgsGPOffset=3452816845 ...} llvm::X86TargetLowering * const
+ llvm::TargetLowering {TM={...} TD=0x00000000008edac0
2009 Apr 28
1
[LLVMdev] AddressSpace of a GlobalAddress
Every GlobalAddress has a GlobalValue, Every GlobalValue is a
PointerType, Every PointerType has an AddressSpace. So is it ok to add a
method getAddressSpace in GlobalAddressSDNode class itself?
Currently we have to do GSDN->getGlobal()->getType()->getAddressSpace().
- Sanjiv
2009 Apr 20
0
[LLVMdev] A few questions from a newbie
On 20/04/2009, at 07.35, Peter Bacon wrote:
> Hello, I am learning to write a new backend for LLVM and have a few
> simple questions.
Hi Peter,
I am a newbie too, but I have recently dealt with the same issues.
> 1) What are the differences between 'constant' and 'targetconstant',
> 'globaladdress' and 'targetglobaladdress'? It is not clear from
2012 Dec 17
0
[LLVMdev] Query Regarding instruction ordering of passive nodes
Hi All,
I'm trying to compile the attached code(gdb11531.c) with latest clang with -O0 on ARM.
Clang seems to be reordering the instructions in case of constant nodes(for ARM) even when O0 is specified resulting in few wrong information when debugging through GDB.
I had few queries,would be great if someone could clarify the same -
In the given assembly code, the instructions where constant
2006 Oct 18
0
[LLVMdev] emitting jump tables
I am currently able to emit jump tables, but I cannot use then because
I cant figure out how to add its address to the constant pool.
For example, if I have the jump table
-------------------------------------
.JTI1_0:
.word .BB1_6
.word .BB1_7
.word .BB1_1
.word .BB1_2
-------------------------------------
the address ".JTI1_0" must be in a
2009 Apr 20
2
[LLVMdev] A few questions from a newbie
Hi Jacob, thank you for your reply.
Your suggestion works! But instead of using the Pat<>, I am using
def MOVE_ADDR : MYInst<(outs Int32Regs:$dst), (ins i32mem:$a),
"move $dst, $a;",
[(set Int32Regs:$dst, (Wrapper tglobaladdr:$a))]>;
I don't quite understand what the semantics of Pat in general. Could you
please explain what
2009 Apr 25
0
[LLVMdev] Calling-convention lowering proposal
On Apr 23, 2009, at 8:09 PM, Dan Gohman wrote:
> Attached is a patch which significantly reworks how calls, incoming
> arguments, and outgoing return values are lowered. It's a major
> change,
> affecting all targets, so I'm looking for feedback on the approach.
>
> The goal of the patch is to eliminate a bunch of awkward code,
> eliminate some unnecessary
2012 May 25
0
[LLVMdev] Changes to TargetLowering::{LowerCallTo,LowerCall}
A change has just been committed that changes the interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall. Instead of passing a mess of parameters to these functions, a new structure has been created that encapsulates these parameters. The motivation is that additional fields can be added to this structure (with appropriate changes to SelectionDAGBuilder for populating the new
2011 Jan 21
1
[LLVMdev] why dummy asserting base/interface class virtual methods instead of pure virtual methods?
LLVM code base seems to be full of base/interface classes, which have
methods like
virtual SDValue
LowerCall(SDValue Chain, SDValue Callee,
CallingConv::ID CallConv, bool isVarArg, bool &isTailCall,
const SmallVectorImpl<ISD::OutputArg> &Outs,
const SmallVectorImpl<SDValue> &OutVals,
const
2012 Apr 04
3
[LLVMdev] [cfe-commits] Fix handling of ARM homogenous aggregates
On Wednesday 04 Apr 2012 12:41:49 Patrik Hägglund H wrote:
> Hi Tim,
>
> > So I've come to the conclusion that the real flaw is LLVM
> > not exposing enough information to the target-dependent
> > backend code for it to do the right thing.
>
> We also had this problem. You might find this patch useful as a starting
> point: