Displaying 20 results from an estimated 80000 matches similar to: "[LLVMdev] StrongPhiElimination pass"
2012 Jun 08
1
[LLVMdev] StrongPHIElimination
Hi,
I have a question regarding StrongPHIElimination.
With (weak) PHIElimination, register classes seems to take care of themselves, but with the Strong version, I get illegal virtual register for instruction.
In this testcase, I define the PHI operands into a bigger (super) RC, than what the using MI can handle. Weak PHI elim handled this by copying the PHI
operands into the right RC. The
2013 Feb 09
2
[LLVMdev] Deleting LiveVariables
On Feb 8, 2013, at 4:37 PM, Cameron Zwarich <zwarich at apple.com> wrote:
> On Feb 8, 2013, at 4:20 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
>> On Feb 8, 2013, at 4:03 PM, Cameron Zwarich <zwarich at apple.com> wrote:
>>
>>> How much of the work is done here? I'd be happy to do the phi elimination part, since I basically did that
2013 Feb 09
0
[LLVMdev] Deleting LiveVariables
On Feb 8, 2013, at 4:20 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
> On Feb 8, 2013, at 4:03 PM, Cameron Zwarich <zwarich at apple.com> wrote:
>
>> How much of the work is done here? I'd be happy to do the phi elimination part, since I basically did that for StrongPhiElimination (RIP).
>
> Any help would be appreciated.
>
> I did a bit of the
2013 Feb 09
3
[LLVMdev] Deleting LiveVariables
On Feb 8, 2013, at 4:03 PM, Cameron Zwarich <zwarich at apple.com> wrote:
> How much of the work is done here? I'd be happy to do the phi elimination part, since I basically did that for StrongPhiElimination (RIP).
Any help would be appreciated.
I did a bit of the easy stuff in 2-addr, it has a LIS = getAnalysisIfAvailable<LiveIntervals>() member that it sometimes updates. It
2013 Feb 10
0
[LLVMdev] Deleting LiveVariables
On Feb 8, 2013, at 4:45 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
> On Feb 8, 2013, at 4:37 PM, Cameron Zwarich <zwarich at apple.com> wrote:
>
>> I'll try doing that. Did you ever add a way to update LiveIntervals quickly after splitting an edge or will that have to finally be added? I can skip the critical edge splitting for now.
>
> That
2010 Oct 05
3
[LLVMdev] [LLVMDev] Phi elimination: Who does what
Aye, between all current register allocators the
'AU.addRequiredID(PHIEliminationID);' will cause phi's to be
eliminated to copies, but this misses the point of my question.
What I am asking, is how does stack know that the value of the
variable which the resulting value of the phi is currently allocated
at. For instance take the instruction:
Machine Basic Block (mbb) 12
reg16666 =
2009 Aug 20
0
[LLVMdev] A question about StrongPhiElimination
Hello, I've encountered a problem similar to 'lost-copy' when using
the StrongPhiElimination and wonder whether it is a incompatibility
issue between the two different algorithms used in
StrongPhiElimination.cpp. The StrongPhiElimination is mostly based on
the algorithm in Zoran Budimilic et al's "Fast Copy Coalescing and
Live-Range Identification" ([1]), while the
2012 Jun 20
0
[LLVMdev] Strong PHI elimination asserts in RegisterCoalescer.C:1388
I will try to make a standalone test case but the one that is failing
uses a custom back end, so it's not really portable.
So is the plan to have the strong PHI elimination behavior rolled into
other passes?
Andrew
On 06/20/2012 06:54 PM, Cameron Zwarich wrote:
> I'm the person who wrote it, and it's not really maintained, as we decided we wanted to go in a different direction
2010 Oct 05
0
[LLVMdev] [LLVMDev] Phi elimination: Who does what
There is nothing that currently handles this properly, as far as I know. If you have a phi
c = phi(a, b)
where a, b and c are all assigned distinct stack slots, then copies must be inserted in the predecessor. If registers have already been allocated, then this memory copy might require a temporary register (unless you're on an architecture like x86 that lets you do memory-to-memory copies
2010 Oct 06
0
[LLVMdev] [LLVMDev] Phi elimination: Who does what
For spilling, I plan to use the Hack-Braun generalization of the furthest-first heuristic for SSA:
http://pp.info.uni-karlsruhe.de/uploads/publikationen/braun09cc.pdf
For coloring, there are a few different approaches you can take, e.g. dominator tree scan, puzzle-solving, or a modified graph coloring / coalescing heuristic like IRC. The best quality for the least amount of implementation effort
2010 Oct 05
2
[LLVMdev] [LLVMDev] Phi elimination: Who does what
The allocator you are building, is it the Hack's and Goos's polynomial
time algorithm?
On Tue, Oct 5, 2010 at 7:14 PM, Cameron Zwarich <zwarich at apple.com> wrote:
> There is nothing that currently handles this properly, as far as I know. If you have a phi
>
> c = phi(a, b)
>
> where a, b and c are all assigned distinct stack slots, then copies must be inserted in
2013 Feb 09
0
[LLVMdev] Deleting LiveVariables
How much of the work is done here? I'd be happy to do the phi elimination part, since I basically did that for StrongPhiElimination (RIP). IIRC you run into a lot of problems with NEON subregister defs, which might be fixed by your new direct LiveIntervals implementation.
Cameron
On Feb 8, 2013, at 3:41 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
> I just enabled a new
2012 Jun 20
1
[LLVMdev] Strong PHI elimination asserts in RegisterCoalescer.C:1388
I'm the person who wrote it, and it's not really maintained, as we decided we wanted to go in a different direction long-term by having fewer passes making independent coalescing decisions rather than more. At the time I stopped working on it, it worked fine on x86 but caused problems with armv7 NEON code.
If you file a PR with a test case, I am happy to take a quick look and try to fix
2012 Aug 27
1
[LLVMdev] info on coming out of SSA form
Hi RamShankar,
On top of Rafael mentioned ,Please check with
lib/CodeGen/StrongPHIElimination.cpp and the papers like
Budimlic, et al. Fast copy coalescing and live-range identification.
// In Proceedings of the ACM SIGPLAN 2002 Conference on Programming
Language
// Design and Implementation (Berlin, Germany, June 17 - 19, 2002).
// PLDI '02. ACM, New York, NY, 25-32.
Boissinot,
2009 Feb 23
1
[LLVMdev] Creating an LLVM backend for a very small stack machine
On Sunday 22 February 2009 23:18:25 Chris Lattner wrote:
> Have you seen:
> http://llvm.org/docs/WritingAnLLVMBackend.html
I have, and it's certainly helpful. Since the Kalescope tutorial is so
amazingly easy to work through that it makes me jealous for a similar
tutorial on the backend. But I'm definitely not complaining. =)
> If you're targeting a stack machine, I'd
2011 Jun 17
0
[LLVMdev] ARM support status (GHC/ARM new calling convention)
I don't know if GuaranteedTailCallOpt is in anyone's plans. It might be a good idea to implement some time. I am not sure what GHC's exact needs are, though.
Cameron
On Jun 17, 2011, at 1:49 PM, Karel Gardas wrote:
>
> Hello Cameron,
>
> thanks a lot for your fast answer, which just makes me curious if making ARM tailcalls on par with x86 in the future is on some of
2011 Jun 17
2
[LLVMdev] ARM support status (GHC/ARM new calling convention)
Hello Cameron,
thanks a lot for your fast answer, which just makes me curious if making
ARM tailcalls on par with x86 in the future is on some of the
development plans already? If not, then what do you think is the
complexity of such work?
Thanks!
Karel
On 06/17/11 10:41 PM, Cameron Zwarich wrote:
> They work pretty well now, at least on Thumb2 / Darwin. It is still fairly conservative
2010 Oct 05
0
[LLVMdev] [LLVMDev] Phi elimination: Who does what
At the moment, phi elimination happens before register allocation, so there can be no phis between memory locations.
Cameron
On Oct 5, 2010, at 4:19 PM, Jeff Kunkel wrote:
> When doing phi elimination, does one have to communicate with the
> stack space at all? The problem I see is two distinctly different
> registers may have two distinctly different stack spaces. When these
>
2018 Sep 26
2
Liveness Analysis
So what is the status about LiveVariables. Is there a plan to remove it?
After searching in old lvm-dev-mails it is mentioned that LiveVariable
still exists due to one pass needing it. And a comment in
TargetPassConfig.cpp indicates that the pass in question is
TwoAddressInstruction:
// FIXME: Once TwoAddressInstruction pass no longer uses kill flags,
// LiveVariables can be removed
2011 Mar 16
2
[LLVMdev] Calls to functions with signext/zeroext return values
On Mar 16, 2011, at 9:31 AM, Cameron Zwarich wrote:
> Promoting the return value is unsafe for bool returns on x86-64, which in the latest revision of the ABI only guarantees that the top 7 bits of the 8-bit register are 0.
My comment is a bit off, because the question of what type to make the return value is somewhat orthogonal to the question of which zext assert we should add.
Cameron