Displaying 20 results from an estimated 11000 matches similar to: "[LLVMdev] Updated Pluggable Coalescers Patch"
2007 Aug 20
4
[LLVMdev] [patch] Pluggable Coalescers
Here's a proposed patch for reworking register coalescing to allow pluggable
coalescers. I think I've got the interfaces where I want them and am
reasonably sure I've squashed most of the bugs. I'm still doing some testing
and want to get through a whole regimen before committing.
As a reminder, this patch has several goals:
- Allow user-specified register coalescers, similar
2007 Aug 27
0
[LLVMdev] [patch] Pluggable Coalescers
Hi David,
Thanks for this patch!
Some comments:
1. typedef std::set<const LiveInterval *> IntervalSet;
Please use SmallPtrSet instead.
2.
+ virtual void mergeIntervals(const LiveInterval &a,
+ const LiveInterval &b,
+ const MachineInstr ©) {};
I find the name misleading. It's not actually
2007 Aug 28
2
[LLVMdev] [patch] Pluggable Coalescers
On Monday 27 August 2007 19:02, Evan Cheng wrote:
> > interfere() isn't sufficient because the allocation algorithm may
> > place other
> > constraints on coalescing. George and Appel's iterated register
> > coalescing
> > is a prime example. It wants to "freeze" copies that should not be
> > coalesced
> > because doing so might cause
2007 Aug 27
2
[LLVMdev] [patch] Pluggable Coalescers
On Monday 27 August 2007 15:13, Evan Cheng wrote:
> 1. typedef std::set<const LiveInterval *> IntervalSet;
> Please use SmallPtrSet instead.
Ok.
> 2.
> + virtual void mergeIntervals(const LiveInterval &a,
> + const LiveInterval &b,
> + const MachineInstr ©) {};
>
> I find the name
2007 Aug 28
0
[LLVMdev] [patch] Pluggable Coalescers
On Aug 27, 2007, at 2:04 PM, David Greene wrote:
>
>> 3.
>>
>> + /// Allow the register allocator to communicate when it doesn't
>> + /// want a copy coalesced. This may be due to assumptions
>> made by
>> + /// the allocator about various invariants and so this
>> question is
>> + /// a matter of legality, not performance.
2007 Aug 29
0
[LLVMdev] [patch] Pluggable Coalescers
On Aug 28, 2007, at 8:59 AM, David Greene wrote:
> On Monday 27 August 2007 19:02, Evan Cheng wrote:
>
>>> interfere() isn't sufficient because the allocation algorithm may
>>> place other
>>> constraints on coalescing. George and Appel's iterated register
>>> coalescing
>>> is a prime example. It wants to "freeze" copies that
2007 Aug 23
0
[LLVMdev] [patch] Pluggable Coalescers
On Monday 20 August 2007 15:58, David A. Greene wrote:
> Here's a proposed patch for reworking register coalescing to allow
> pluggable coalescers.
No comments?
Or is everyone taking vacation before the fall? :)
-Dave
2007 Jul 11
0
[LLVMdev] Pluggable Register Coalescers
On Wednesday 11 July 2007 12:41, Tanya M. Lattner wrote:
> I think the coalescer should be flexible enough to be run independent of
> the register allocator. For example, you may want to expose the copies
> induced by transforming out of SSA to the scheduler. If the scheduler is
> run before register allocation, then you would want the coalescing to
> happen before as well.
I
2007 Jul 09
0
[LLVMdev] Pluggable Register Coalescers
Hi David,
On Mon, 2007-07-09 at 16:32 -0500, David Greene wrote:
> Ok, I'm at a point now where I can implement plyggable register coalescers as
> we originally wanted when I started the refactoring work.
>
> I'm in the midst of finishing up an implementation following the model of how
> register allocators are selected. Thgere may be some more refactoring/code
>
2007 Jul 18
1
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Jul 17, 2007, at 12:21 PM, David Greene wrote:
>
>> Are you designing the coalescer so it always run before
>> allocation? If so,
>> please keep it simple. :-)
>
> Believe me, I'm trying to keep it as simple as possible. The
> coalescer I'm
> working on doesn't run "before" allocation. It runs in conjunction
> with it.
>
2007 Jul 16
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Jul 16, 2007, at 9:12 AM, David Greene wrote:
> On Friday 13 July 2007 13:32, David A. Greene wrote:
>> On Wednesday 11 July 2007 15:07, Christopher Lamb wrote:
>>> Could it be possible for there to be a harness type interface that
>>> would allow coalescers that support both modes to be hooked into the
>>> pass registration, and those that depend on the
2007 Jul 18
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Jul 17, 2007, at 9:28 AM, David Greene wrote:
>
> [...]
> 00369 // If the intervals were swapped by Join, swap them back so
> that the
> register
> 00370 // mapping (in the r2i map) is correct.
> 00371 if (Swapped) SrcInt.swap(DstInt);
>
> Whoops! At this point repSrcReg is not consistent with SrcInt and the
> same goes for repDstReg!
>
> 00372
2007 Jul 09
2
[LLVMdev] Pluggable Register Coalescers
Ok, I'm at a point now where I can implement plyggable register coalescers as
we originally wanted when I started the refactoring work.
I'm in the midst of finishing up an implementation following the model of how
register allocators are selected. Thgere may be some more refactoring/code
sharing work to be done with this, but I want to get it working first.
createRegisterAllocator() is
2007 Jul 11
0
[LLVMdev] Pluggable Register Coalescers
On Monday 09 July 2007 17:07, David Greene wrote:
> On Monday 09 July 2007 16:49, Reid Spencer wrote:
> > The only thing that comes to mind is that creating and running the
> > coalescer are separate operations so you might want to do the creation
> > of it in alias analysis style. Then, the allocator can a) determine if a
> > coalescer was created, b) obtain the
2007 Jul 16
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Mon, 2007-07-16 at 16:19 -0700, Evan Cheng wrote:
> Property changes on: llvm/include/llvm/CodeGen/RegisterAllocator.h
> ___________________________________________________________________
> Name: svn:eol-style
> + LF
>
> What's this?
Its a property change. In Subversion every file and directory can have
properties associated with them. For example the svn:ignore
2007 Jul 16
2
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Friday 13 July 2007 13:32, David A. Greene wrote:
> On Wednesday 11 July 2007 15:07, Christopher Lamb wrote:
> > Could it be possible for there to be a harness type interface that
> > would allow coalescers that support both modes to be hooked into the
> > pass registration, and those that depend on the allocator not be
> > registered as passes?
>
> I have a
2007 Jul 09
2
[LLVMdev] Pluggable Register Coalescers
On Monday 09 July 2007 16:49, Reid Spencer wrote:
> The only thing that comes to mind is that creating and running the
> coalescer are separate operations so you might want to do the creation
> of it in alias analysis style. Then, the allocator can a) determine if a
> coalescer was created, b) obtain the coalescer that was created, if any,
> and c) run it at the right time for the
2007 Jul 18
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Jul 17, 2007, at 8:49 PM, David A. Greene wrote:
> On Tuesday 17 July 2007 14:21, David Greene wrote:
>
>>> I don't care for a MachineFunctionPass that can be directly
>>> called. I
>>> think it's a very good idea to keep the coalescers independent from
>>> the allocators. If that's desired, we should enhance passmanager so
>>>
2007 Jul 18
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
Hi David,
Just as an idea, you could try to use a coloring register allocator
submitted by Bill Wendling some time ago on the mailing list?
See this thread for more information
http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-April/008489.html
This allocator is already implemented using LLVM and could be probably
useful for testing your new infrastructure and refactored interfaces.
At least
2007 Jul 17
2
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
On Monday 16 July 2007 18:20, Evan Cheng wrote:
> > Does the current implementation follow a published algorithm? If
> > so, do we
> > have a pointer to it? The comments are rather sparse and it's
> > difficult to
> > figure out what's going on at times.
>
> I don't know. I suspect not. I agree the current implementation is a
> bit of a