Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] Newbie: Target Lowering info."
2007 Nov 27
0
[LLVMdev] Newbie: Target Lowering info.
On Nov 24, 2007, at 7:28 PM, Sanjiv Gupta wrote:
> Could anybody guide me what information do I need to know about my
> target in order to provide the target lowering info to the llvm DAG
> generator? We do not have any fixed registers for argument passing.
> Everything including the formal and actual arguments will take part in
> a global interprocedural regalloc.
You don't
2007 Nov 29
1
[LLVMdev] Newbie: Target Lowering info.
thanks Evan,
I have just started writing td files.
Any ideas how do I describe instructions for an accumulator based machine.
The other pecularity is that we do not want to have any software stack.
So the instructions like load and store have no meanings.
In that case, how do I lower instructions that operate on stack frame?
TIA,
Sanjiv
On 11/26/07, Evan Cheng <evan.cheng at apple.com>
2007 Nov 23
2
[LLVMdev] global register allocation.
On 11/23/07, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote:
>
>
> Hi, Sanjiv,
>
> those passes operate on the whole machine function. Each machine
> function contains many basic blocks. If a program has many functions, the
> register allocator will be called as many times, i.e it does not do
> interprocedural allocation.
>
> best,
>
>
2007 Nov 25
1
[LLVMdev] global register allocation.
Thanks again. One more question here:
Since the regalloc works once per function, do I stil have access to
the Call graph?
Just saving information between regalloc passes for different
functions may not be enough for my case. I will need to maintain the
regalloc info of various passes in the call graph order.
Anyways thanks for your inputs. I will get back if I need to learn more.
Sanjiv
On Nov
2007 Nov 23
0
[LLVMdev] global register allocation.
Hi, again,
I think you can do it in the same way that the other allocators have
been coded, i.e extend RA, register the pass and so forth. I am not sure
about the best way to pass information among a run of RegAlloc to the
other, maybe the other guys in the list could suggest something. Yet, you
can always dump it into a file, and read it again, everytime it is
necessary. Remember that
2007 Nov 23
2
[LLVMdev] global register allocation.
As far as I understand , the regalloc passes provided operate on basic block
level?
Is there anything that operate on the whole Module?
Thx,
Sanjiv
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20071122/0b24c954/attachment.html>
2007 Nov 23
0
[LLVMdev] global register allocation.
Hi, Sanjiv,
those passes operate on the whole machine function. Each machine
function contains many basic blocks. If a program has many functions, the
register allocator will be called as many times, i.e it does not do
interprocedural allocation.
best,
Fernando
> As far as I understand , the regalloc passes provided operate on basic block
> level?
> Is there anything that
2009 Apr 24
0
[LLVMdev] Calling-convention lowering proposal
Dan Gohman wrote:
> Hello,
>
> 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 differences between targets,
2008 Nov 10
2
[LLVMdev] Custom lowering binary operations on one register machines.
Ours is an accumulator based architecture.
So one operand of ADD/SUB operations is in REG (accumulator) and the
other one is in Memory. The result can be left either in REG or memory.
The LLVM DAG for such operations expect both operands in REG.
for example:
char a, b, c, d, e;
a = (b - c) + (d - e);
generates
addc:i8 (subc:i8(b,c), subc:i8(d,e))
Looks like we need to custom lower addc
2008 Oct 22
2
[LLVMdev] clobbering other physical registers in storeRegtoStackSlot.
In our case, storeRegToStackSlot, loadRegFromStackSlot clobbers some other physical register which may be holding a live value used somewhere else. How do I make regalloc aware so that it saves the value before storeRegToStackSlot and make it available again at the point of earlier use?
TIA,
Sanjiv
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2008 Nov 11
0
[LLVMdev] Custom lowering binary operations on one register machines.
On Nov 10, 2008, at 9:51 AM, sanjiv gupta wrote:
> Ours is an accumulator based architecture.
>
> So one operand of ADD/SUB operations is in REG (accumulator) and the
> other one is in Memory. The result can be left either in REG or
> memory.
>
> The LLVM DAG for such operations expect both operands in REG.
>
> for example:
> char a, b, c, d, e;
> a = (b - c) +
2008 Aug 06
3
[LLVMdev] Modeling 16-bit pointer registers for an 8-bit target
Pointer size on our target is 16-bits, and we have two 16-bit registers
that can be used only to hold pointers (indirect addresses).
All operations on the target are 8-bit operations, so it takes two 8-bit
loads to load these pointer registers.
We want LLVM to automatically expand all types to 8-bit values.
The problem is that LLVM does not expand GlobalAddresses, which are
16-bit
2008 Oct 28
1
[LLVMdev] clobbering other physical registers in storeRegtoStackSlot.
On Thu, 2008-10-23 at 11:17 -0700, Evan Cheng wrote:
>
> On Oct 22, 2008, at 11:09 AM, Sanjiv.Gupta at microchip.com wrote:
>
> > In our case, storeRegToStackSlot, loadRegFromStackSlot clobbers some
> > other physical register which may be holding a live value used
> > somewhere else. How do I make regalloc aware so that it saves the
> > value before
2008 Aug 07
2
[LLVMdev] Modeling 16-bit pointer registers for an 8-bit target
>
> I don't think there is code in Legalizer to expand GlobalAddress. But
you
> can custom lower it. X86 custom lower GlobalAddress nodes for a
different
> reason.
>
> Evan
>
Hmmm...That means we have to make i16 as a legal type (since
GlobalAddresses are 16-bits) and custom lower all 16-bit operations to
8-bit operations. I was thinking to take advantage of the
2008 Oct 23
0
[LLVMdev] clobbering other physical registers in storeRegtoStackSlot.
On Oct 22, 2008, at 11:09 AM, Sanjiv.Gupta at microchip.com wrote:
> In our case, storeRegToStackSlot, loadRegFromStackSlot clobbers some
> other physical register which may be holding a live value used
> somewhere else. How do I make regalloc aware so that it saves the
> value before storeRegToStackSlot and make it available again at the
> point of earlier use?
>
2013 May 17
3
[LLVMdev] subtle issue with soft-float and new attribute scheme (possibly an issue with other attributes)
I can't say this is a bug it is changed behavior from before the new
attribute scheme.
This issue may appear with other attributes. (there are other attributes
that clang will now place
on each function)
If you run clang as a single pass to create a .ll and don't say
-msoft-float, it puts the attribute use-soft-float=false on every
function. (It used to be that in that case
2009 Apr 24
9
[LLVMdev] Calling-convention lowering proposal
Hello,
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 differences between targets, and to
facilitate future refactoring and feature work.
2017 Feb 25
2
Help understanding and lowering LLVM IDS conditional codes correctly
Note: Question is written after describing what I have coded.
Hello LLVMDevs,
I am trying to impliment floating point comparsion for an architecture which
supports following type of floating point comparision if FPU is available:
fcmp.un --> true if one of the operand is NaN
fcmp.lt --> ordered less than, if any input NaN then return false
fcmp.eq --> ordered equal, if any input NaN
2009 Jul 29
1
[LLVMdev] Lowering intrinsics in Codegen.
For lowering llvm.memcpy.* etc SelectionDAG::getMemcpy generates a
libcall to "memcpy" as a last resort. See the code snippets below.
// FIXME: pass in DebugLoc
std::pair<SDValue,SDValue> CallResult =
TLI.LowerCallTo(Chain, Type::VoidTy,
false, false, false, false, 0, CallingConv::C, false,
getExternalSymbol("memcpy",
2010 Apr 14
2
[LLVMdev] how to set -pre-ra-sched from code?
I've found that I need to set the -pre-RA-sched parameter when using
tools like llc to get the kind of instruction scheduling I want.
However I'm normally generating and running code on the fly using the
JIT, and can't figure out how to set the -pre-RA-sched option anywhere
other than on the command line for the provided tools. So what code
would I write (or where is the API?) to