Displaying 20 results from an estimated 1000 matches similar to: "PBQP register allocation and copy propagation"
2016 Jun 03
2
PBQP register allocation and copy propagation
Hi James,
I’ve tried to play in the past with the allocation order, which can definitely be tweaked and improved. The metric we use for spill cost being what it is (i.e. not targeted for PBQP, but that’s a different subject), I found it made real sense to use some other heuristics to sort nodes (on top of the spill cost) when there was a tie between them. Of course, that’s a heuristic and it can
2016 Jun 03
2
PBQP register allocation and copy propagation
Hi,
> > I think one idea to improve the situation is to consider the cost
vector of adjacent nodes during RN. Let's say you decided to do a RN for
node A and want to compute the costs for choosing register %Ri. The current
implementation does this by computing min(row/column i of edge A <--> B)
but you can do better by adding B's cost vector to the row/column before
computing
2016 Jun 04
2
PBQP register allocation and copy propagation
> (1) Spill cost metrics.
I think this one cannot be dissociated from some kind of live range pre-splitting.
Cheers,
Arnaud
From: Lang Hames [mailto:lhames at gmail.com]
Sent: 03 June 2016 23:15
To: James Molloy
Cc: Arnaud De Grandmaison; llvm-dev at lists.llvm.org; Sebastian Buchwald; Bernhard Scholz
Subject: Re: [llvm-dev] PBQP register allocation and copy propagation
Hi James, Arnaud,
2012 Mar 21
2
[LLVMdev] PBQP & CalcSpillWeights
Hi All,
I finally had a chance to get back to my pbqp trials, now using the 3.0
release. I still hit the same assert : "Attempting to spill already spilled
value."
This is triggered because in RegAllocPBQP::mapPBQPToRegAlloc, a vreg node is
either :
- a physical register (problem.isPRegOption(vreg, alloc)),
- or a spill (problem.isSpillOption(vreg, alloc))
The problem is that pass
2012 Mar 26
2
[LLVMdev] PBQP & CalcSpillWeights
Hi Lang,
> From memory your target is not public, so I won't be able to reproduce
> the crash myself. Is that correct?
Correct.
> If that's the case, I could add functionality to dump the PBQP graphs
> during allocation. I think they should give me enough information to
> debug the issue. Would you be able to share the PBQP graphs?
I can share the pbqp graph if you send
2012 Mar 27
0
[LLVMdev] PBQP & CalcSpillWeights
Hi Arnaud,
Thanks for attaching those files. I'll take a look at them.
Commit r153483 adds an option to the PBQP allocator,
"-pbqp-dump-graphs", to dump the PBQP graph for each round of each
function in a compilation unit. The generated files are named "<module
id>.<function>.<round>.pbqpgraph", and contain a simple text
representation of the PBQP graph.
2010 Sep 20
2
[LLVMdev] Supporting Complex Register Allocation Constraints (PBQP Allocator Status Update)
Hi Jakob,
> Out of curiosity, how are you dealing with live range splitting and
> coalescing in PBQP? I know you added the LoopSplitter pass.
>
> For linear scan in LLVM we are going in the direction of aggressive
> coalescing before allocation, and on-demand splitting during allocation.
>
> I know that other allocators use no early coalescing, and coalesce during
>
2010 Sep 20
0
[LLVMdev] Supporting Complex Register Allocation Constraints (PBQP Allocator Status Update)
On Sep 20, 2010, at 7:53 AM, Lang Hames wrote:
> I've just committed some changes to the PBQP allocator which are designed to make it easier to implement custom register allocation constraints. This is a quick summary of those changes, and of the status of the PBQP allocator in general.
Thanks, Lang!
Out of curiosity, how are you dealing with live range splitting and coalescing in PBQP?
2009 Nov 12
2
[LLVMdev] Crash in PBQP register allocator
Hi,
Please see the two ".ll' files attached.
Command line used
llc -march=pic16 -pre-RA-sched=list-burr -regalloc=pbqp new.obc
The above test case crashes only when I use the combination of list-burr
scheduler and pbqp register allocator. If any of them (scheduler or
register allocator) is replaced with some alternate then I don't see the
crash.
I could not figure
2015 Mar 04
2
[LLVMdev] PBQP spilling
Hi,
I would like to ask about PBQPs use of InlineSpiller. The code output when using PBQP gets a lot bigger compared to when using RegAllocGreedy. PBQP does not split the live intervals, and a lot more (often redundant) reload instructions are emitted as a result, it seems. I wonder why this is, and if there are any plans to improve on this point?
/Jonas Paulsson
-------------- next part
2012 Oct 20
2
[LLVMdev] Unable to build PBQP/Graph.h with libc++
This is a known issue with the current PBQP data structures. I'm working on
an overhaul of the PBQP allocator at the moment which should address this.
- Lang.
On Sat, Oct 20, 2012 at 2:08 PM, Benjamin Kramer <benny.kra at gmail.com>wrote:
>
> On 20.10.2012, at 22:47, Jordan Rose <jordan_rose at apple.com> wrote:
>
> > Hi, everyone. Today I was trying to build LLVM
2017 Oct 05
2
Status of PBQP register allocator?
Hi all,
I was wondering about whether the PBQP register allocator is likely to be
maintained in the future. It's proving to be a nice way to encode some
instruction encoding constraints for an out-of-tree backend we have, but
there's concern about it being abandoned or bitrotting in the future.
Also, if PBQP is likely to lapse out of regular maintenance in the future,
is there a simple
2009 Nov 13
0
[LLVMdev] Crash in PBQP register allocator
This looks like a bug in the PBQP solver. I'm currently investigating.
Cheers,
Lang.
On Thu, Nov 12, 2009 at 12:46 AM, <Sachin.Punyani at microchip.com> wrote:
> Hi,
>
>
>
> Please see the two “.ll’ files attached.
>
>
>
> Command line used
>
> llc –march=pic16 –pre-RA-sched=list-burr –regalloc=pbqp new.obc
>
>
>
> The above test case
2011 Jun 06
2
[LLVMdev] PBQP & register pairing
Hi All,
My target has some instructions requiring register pairs. I decided to give a try to the PBQP allocator : it is working fine in 99% of the cases, but I am stumbling on the following issue.
Instruction 'MPQD' takes 3 register operands inputs, with the constraint that operands 0 and 2 must be consecutive registers. Operand 1 has no particular constraint. It has no output register.
2009 Nov 15
2
[LLVMdev] Crash in PBQP register allocator
Hi Sachin,
Confirmed: This is being caused by a subtle issue in the heuristic
PBQP solver. Specifically: R1/R2 reductions as currently implemented
can, on rare occasions, lead to the heuristic solver failing to find a
finite cost solution, even though one exists. The infinite cost
solution will always be in violation of some rule of register
allocation (failing to handle an interference, or
2012 Oct 20
3
[LLVMdev] Unable to build PBQP/Graph.h with libc++
Hi, everyone. Today I was trying to build LLVM with libc++ and C++11 enabled, and I ran into this:
http://stackoverflow.com/questions/10065384/instantiation-of-a-list-with-an-incomplete-type-in-a-typedef
Basically, PBQP/Graph.h forward-declares classes, then tries to get iterators for std::lists of those classes. This is technically undefined behavior. I tried fudging with the order of
2013 Aug 11
2
[LLVMdev] pbqp register allocator-need help
Hello Sir,
Im trying to test run pbqp register allocator for small C programs.
by
llc -regalloc=pbqp -debug <bitcode of the file>
It is giving me segmentation fault for even very simple programs having
loops or if statements.
Please tell me where I'm going wrong.
--
Regards,
Smriti Jaiswal
MTech
Dept of Computer Science and Engg,
IIT Kanpur
-------------- next part --------------
2010 May 11
2
[LLVMdev] Need help for my PBQP regAlloc proj in llvm....
Hello,
we are currently working on my project that aims at improving the register
allocation scheme by identifying if the interference graphs are chordal or
not.
we are working on the llvm compiler .we are forcing the compiler to use
PBQP register allocation scheme by an option of ' ' regalloc=pbqp ' during
the execution of prgm. we have been succesfull in accessing the interference
2015 Mar 06
2
[LLVMdev] PBQP spilling
Hi,
I have worked a little on the PBQP register allocator, and it is quite clear (at least to me) that it is not even a serious alternative to RegAllocGreedy at the moment, due to the poor handling of spilling. As Arnaud wrote below, it is not optimizing spilling at all, but rather just spills anything that does not get an assignment. The result is a lot more spill/reload instructions than
2009 Nov 17
0
[LLVMdev] Crash in PBQP register allocator
Thanks Lang!
I think we can use linear scan as work around for short term.
Thanks for your help.
Regards
Sachin
> -----Original Message-----
> From: Lang Hames [mailto:lhames at gmail.com]
> Sent: Sunday, November 15, 2009 10:08 AM
> To: Sachin Punyani - I00202
> Cc: llvmdev at cs.uiuc.edu
> Subject: Re: [LLVMdev] Crash in PBQP register allocator
>
> Hi Sachin,
>