Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] Reserving registers that depend on spilled code"
2011 May 20
1
[LLVMdev] LLVMdev Digest, Vol 83, Issue 33
I have a few pass managers, but only one of them has been initialized with
addPassesToEmitCode, how do I find how many passes are added to a function
pass manager ?
Thank you,
Xin
On Fri, May 20, 2011 at 1:00 PM, <llvmdev-request at cs.uiuc.edu> wrote:
> Send LLVMdev mailing list submissions to
> llvmdev at cs.uiuc.edu
>
> To subscribe or unsubscribe via the World Wide
2011 Nov 28
2
[LLVMdev] Register allocation in two passes
Hello,
I'm having a curious design conflict related to reserving registers before
the register allocator pass is executed with the backend I'm writing.
Basically, what I need is to reserve a certain register only if frame space
is allocated in the stack, more precisely I'm interested in the case where
a register spill occurs.
In order to know if a register is spilled the register
2011 Nov 29
2
[LLVMdev] Register allocation in two passes
Yes, I want the register to be allocatable when there are no stack frames
used in the function so it can be used for other purposes. In fact, I
looked at how other backends solve this problem, but they are all too
conservative by always reserving the register which in my case it is not a
good solution because of the performance impact of not having this register
available.
I find very interesting
2012 Dec 18
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Hello Jakob,
> Those are some severe constraints on register allocation, but it ought to
> be possible anyway.
>
Indeed, these constraints aren't playing very well with the register
allocator :\
>
> You may wan't to investigate how RAGreedy::canEvictInterference() is
> behaving.
>
Ok, this is what I've noticed, not sure if it makes sense at all but,
regalloc
2012 Jul 14
2
[LLVMdev] Issue with Machine Verifier and earlyclobber
Hello Jakob,
I'm still getting the error, I can give you any other debug info you need.
I haven't pasted the regalloc debug info here because it is quite huge, but
if you tell me what specific details you need I will include them.
Thanks for your help!
2012/7/14 Jakob Stoklund Olesen <stoklund at 2pi.dk>
>
> On Jul 14, 2012, at 10:09 AM, Borja Ferrer <borja.ferav at
2013 Jan 07
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Hello Jakob,
Did you get a chance to take a look into this, and if not, can you do it
when you get some spare time?
Thanks!
2012/12/19 Borja Ferrer <borja.ferav at gmail.com>
> We did something like this back when the register allocator couldn't split
>> live ranges.
>>
>
> Yes, I remember the isWinToJoinCrossClass() function, removed here:
>
>
2010 Dec 22
3
[LLVMdev] Original data type after DAG legalization
Hello,
Is there a way to determine before register allocation if a virtual reg is
mapped to the lo or hi part of a piece of a value? Basically i need to tell
the register allocator to use a certain set of registers for the lo part and
others for the hi part, so in order to do this i would have to know if the
data value was expanded into smaller pieces and which piece is each one.
Additionally,
2011 Nov 29
0
[LLVMdev] Register allocation in two passes
On Nov 28, 2011, at 3:39 PM, Borja Ferrer wrote:
> Hello,
>
> I'm having a curious design conflict related to reserving registers before the register allocator pass is executed with the backend I'm writing. Basically, what I need is to reserve a certain register only if frame space is allocated in the stack, more precisely I'm interested in the case where a register spill
2012 Jul 14
2
[LLVMdev] Issue with Machine Verifier and earlyclobber
Hello,
I'm getting a machine verifier error after introducing the earlyclobber
constraint to some instructions where the src and dest regs can't be the
same. The offending instruction pattern is this one:
let canFoldAsLoad = 1,
isReMaterializable = 1,
Constraints = "@earlyclobber $dst" in
def LDDWRdPtrQ : Inst<(outs DREGS:$dst),
(ins memri:$src),
2013 Jan 09
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Ok, I've found that marking tiny live intervals as not spillable inside
VirtRegAuxInfo::CalculateWeightAndHint is not playing nicely with very
constrained regclasses, in my case a regclass composed of only one
register.
As a workaround, instead of marking them as not spillable, I've marked them
with a very high spill cost and the regalloc is able to compile the
function with good code
2013 Jan 07
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
On Jan 7, 2013, at 4:58 AM, Borja Ferrer <borja.ferav at gmail.com> wrote:
> Hello Jakob,
>
> Did you get a chance to take a look into this, and if not, can you do it when you get some spare time?
It's not likely I'll have time to look at this in the near future. I'd recommend you do it yourself.
/jakob
> 2012/12/19 Borja Ferrer <borja.ferav at gmail.com>
2010 Dec 30
0
[LLVMdev] Original data type after DAG legalization
Hello everybody,
During the past week I've kept looking for a solution to this but i couldn't
find one, is there really a way to get this type of information or some
workaround?
Thanks.
2010/12/22 Borja Ferrer <borja.ferav at gmail.com>
> Hello,
>
> Is there a way to determine before register allocation if a virtual reg is
> mapped to the lo or hi part of a piece of a
2016 Feb 13
4
Register spilling fix for experimental 6502 backend
So I've been designing an experimental 6502 backend for LLVM. Link:
<https://github.com/beholdnec/llvm-m6502>
The 6502 only has a few registers, one accumulator and two indexes, none of
which are large enough to hold an absolute pointer. Because of this, the
backend really tests the power of LLVM's register allocator (RA).
I've made a change to the RA that might be of interest
2012 Jul 15
0
[LLVMdev] Issue with Machine Verifier and earlyclobber
Jakob, one more hint, I've placed some asserts around the code you added
and noticed that the InlineSpiller::insertReload() function is not being
called.
2012/7/14 Borja Ferrer <borja.ferav at gmail.com>
> Hello Jakob,
>
> I'm still getting the error, I can give you any other debug info you need.
> I haven't pasted the regalloc debug info here because it is quite
2010 Aug 29
2
[LLVMdev] Register design decision for backend
Hello everbody,
This is my first email to the list, and hope to write more as i get more
involved in LLVM. I'm currently writing a backend for a 8 bit
microcontroller, and i have arrived to a point where i need to take a design
decision in order to continue the development.
Some background information: The microcontroller only has 8bit registers,
however it has some special instructions that
2012 Dec 19
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Hello Jakob,
I think I've found something interesting that may help you get a better
idea of what's going on.
While looking at the debug info I noticed that the coalescer was removing
lots of copies that could help the allocator make more cross class copies.
As a test, I disabled the join-liveintervals option in the coalescer which
gave me the surprise of making the regalloc succeed. To
2010 Sep 04
6
[LLVMdev] Possible missed optimization?
Hello, while testing trivial functions in my backend i noticed a suboptimal
way of assigning regs that had the following pattern, consider the following
function:
typedef unsigned short t;
t foo(t a, t b)
{
t a4 = b^a^18;
return a4;
}
Argument "a" is passed in R15:R14 and argument "b" is passed in R13:R12, the
return value is stored in R15:R14.
Producing the
2013 Jan 09
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
On Jan 9, 2013, at 10:46 AM, Borja Ferrer <borja.ferav at gmail.com> wrote:
> Ok, I've found that marking tiny live intervals as not spillable inside VirtRegAuxInfo::CalculateWeightAndHint is not playing nicely with very constrained regclasses, in my case a regclass composed of only one register.
> As a workaround, instead of marking them as not spillable, I've marked them
2012 Jul 14
0
[LLVMdev] Issue with Machine Verifier and earlyclobber
On Jul 14, 2012, at 10:09 AM, Borja Ferrer <borja.ferav at gmail.com> wrote:
> Hello,
>
> I'm getting a machine verifier error after introducing the earlyclobber constraint to some instructions where the src and dest regs can't be the same. The offending instruction pattern is this one:
>
> let canFoldAsLoad = 1,
> isReMaterializable = 1,
> Constraints =
2012 Mar 04
1
[LLVMdev] Adding a new function attribute
Hello,
I'm adding a new function attribute in clang and llvm for a backend I'm
writing that treats prolog and epilogue code in a special way inside
interrupt handlers, similar to what naked does. One way I've seen to do
this is to add a new attribute type in Attributes.h, however to me it feels
bad to add a target dependent attribute into this place which is very
target independent.