Displaying 15 results from an estimated 15 matches for "pbqpbuilders".
Did you mean:
pbqpbuilder
2011 Apr 26
2
[LLVMdev] Register pairing in PBQP
Hi.
Im currently investigating LLVM's implementation of PBQP as a part of a
bachelors thesis im doing on register allocation for regular architectures.
In particullar, im looking at the possibility for improving the spill rate
of PBQP for a particular DSP architecture, by using register pairing.
>From reading the source code of lib/CodeGen/RegAllocPBQP.cpp i conclude
that support for
2011 Apr 27
0
[LLVMdev] Register pairing in PBQP
...target and set PBQP to be the default allocator for your system. If the
CodeGen framework can represent this kind of pairing constraint now you
could add your new PBQPBuilder to CodeGen so that other target writers can
benefit from it.
See lib/CodeGen/RegAllocPBQP.cpp for examples of how to write PBQPBuilders,
and I'm happy to answer any questions, time permitting. :)
Cheers,
Lang.
On Wed, Apr 27, 2011 at 5:59 PM, Jakob Stengård <jakobste at kth.se> wrote:
> >Can you describe your pairing constraint in more detail? I've seen a few
> different kinds of "pairing", and...
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.
2012 Apr 19
1
[LLVMdev] PBQP & CalcSpillWeights
Hi Arnaud,
I'm glad to hear that your test case is working.
I however still get my wrong allocation in some non trivial cases : the
> pairing constraint is not fulfilled.
>
> I have tried to modify the 'ensure pairable' pass (the pass undoing some
> of the coalescer's work) to always insert register copies for
> instructions with the pairable constraint, instead of
2012 Apr 11
0
[LLVMdev] PBQP & CalcSpillWeights
Hi Lang,
The assert is not triggered any longer on my testcases :)
I however still get my wrong allocation in some non trivial cases : the
pairing constraint is not fulfilled.
I have tried to modify the 'ensure pairable' pass (the pass undoing some
of the coalescer's work) to always insert register copies for
instructions with the pairable constraint, instead of being smart and
2012 Apr 05
2
[LLVMdev] PBQP & CalcSpillWeights
Hi Lang,
Thanks a lot for taking time to look into this. I will test the fix soon and
let you know the results.
Cheers,
--
Arnaud de Grandmaison
On Tuesday, April 03, 2012 17:30:33 Lang Hames wrote:
> Hi Arnaud,
>
> Apologies for the delayed reply.
>
> Thank you for the excellent test case - it exposed a subtle bug in the
> colorability heuristic. This has been fixed in
2011 Jun 06
0
[LLVMdev] PBQP & register pairing
On Jun 6, 2011, at 7:07 AM, Arnaud Allard de Grandmaison wrote:
> 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
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.
2012 Mar 27
2
[LLVMdev] PBQP & CalcSpillWeights
Hi Lang,
I have reduced the testcase as much as possible. The log of the run and the
dumped graphes are attached.
Cheers,
--
Arnaud de Grandmaison
On Tuesday, March 27, 2012 01:20:35 Lang Hames wrote:
> 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
2012 Apr 03
0
[LLVMdev] PBQP & CalcSpillWeights
Hi Arnaud,
Apologies for the delayed reply.
Thank you for the excellent test case - it exposed a subtle bug in the
colorability heuristic. This has been fixed in r153958.
In case you are curious, the bug was as follows: the PBQP solver applies
applies a simplification step to each matrix. When all elements of a matrix
row or column are equal, the value for those elements is "pushed
2010 Sep 20
4
[LLVMdev] Supporting Complex Register Allocation Constraints (PBQP Allocator Status Update)
Hi All,
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.
First a quick bit of background:
The PBQP allocator is based on ideas described in [1]. I implemented this
algorithm (with the improved heuristic
2012 Mar 23
0
[LLVMdev] PBQP & CalcSpillWeights
Hi Arnaud,
LiveInterval::markNotSpillable() sets the live interval's spill weight
to infinity. For well-formed PBQP graphs (i.e. ones that have some
finite-cost solution), PBQP should never chose to spill such an
interval. The two possibilities for this crash are that the input
graph has no finite-cost solution, or that you've exposed a bug in the
PBQP solver.
>From memory your target
2011 Jun 06
2
[LLVMdev] PBQP & register pairing
Arnaud,
another way to look at it, if the description of your
register sets includes "pairs",
is that your assembly language syntax for MPQD is redundant,
operand-2 is the second
half of the register-pair in operand-0, so an alternative is to let
llvm think this is a two
operand instruction (one of them being a pair) rather than a three
operand instruction.
even
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