search for: phielimin

Displaying 20 results from an estimated 48 matches for "phielimin".

Did you mean: phielim
2012 Jul 25
2
[LLVMdev] Question about an unusual jump instruction
...39;a' J <#BB1> BB1: %vreg1<def> = PHI %vreg0, <#BB0>, %vreg3, <#BB3> J <#BB2> BB2: // loop body BB3: %vreg3<def> = DECJNZ %vreg1<kill>, <#BB1>, %SR<implicit,def> J <#BB4> BB4: // end A first problem was related to PHIElimination, while eliminating the PHI-node a copy was generated before the DECJNZ, because it's a terminator instruction, but the copy should use the value defined by the DECJNZ. To solve this problem I wrote a preprocess pass which is run just before PHIElimination and change the opcode of PHIs...
2012 Jul 04
0
[LLVMdev] Assertion in PHIElimination.cpp
On Jul 4, 2012, at 5:35 AM, Philipp Brüschweiler <blei42 at gmail.com> wrote: > Hi everyone > > I'm hitting an assertion in PHIElimination.cpp:375. > > "Terminator instructions cannot use virtual registers unless" > "they are the first terminator in a block!" > > I was looking at the code around that location a bit and have not found > a reason why this assertion has to hold, except for a c...
2018 Sep 26
2
Liveness Analysis
...012. So I assume that the plans to replace LiveVariables by LiveIntervals in TwoAddressInstructionPass got some history. Has there been any evaluation (lately) from using -early-live-intervals? I got a feeling that the SSA deconstruction passes are overly complicated right now, since for example PHIElimination tries to update both LV and LIS conditionally depending on if the analyses are available or not. But there are no test cases that set -early-live-intervals afaict, so there is a bulk of code that seems to not be regression tested related to LIS in PHIElimination and TwoAddressInstructionPass....
2012 Jul 04
2
[LLVMdev] Assertion in PHIElimination.cpp
Hi everyone I'm hitting an assertion in PHIElimination.cpp:375. "Terminator instructions cannot use virtual registers unless" "they are the first terminator in a block!" I was looking at the code around that location a bit and have not found a reason why this assertion has to hold, except for a comment: // In our final...
2012 Jul 25
0
[LLVMdev] Question about an unusual jump instruction
...> = PHI %vreg0, <#BB0>, %vreg3, <#BB3> > J <#BB2> > BB2: > // loop body > BB3: > %vreg3<def> = DECJNZ %vreg1<kill>, <#BB1>, %SR<implicit,def> > J <#BB4> > BB4: > // end > > A first problem was related to PHIElimination, while eliminating the PHI-node a > copy was generated before the DECJNZ, because it's a terminator instruction, but > the copy should use the value defined by the DECJNZ. > > To solve this problem I wrote a preprocess pass which is run just before > PHIElimination and chang...
2012 Jul 25
1
[LLVMdev] Question about an unusual jump instruction
...#BB3> >> J <#BB2> >> BB2: >> // loop body >> BB3: >> %vreg3<def> = DECJNZ %vreg1<kill>, <#BB1>, %SR<implicit,def> >> J <#BB4> >> BB4: >> // end >> >> A first problem was related to PHIElimination, while eliminating the PHI-node a >> copy was generated before the DECJNZ, because it's a terminator instruction, but >> the copy should use the value defined by the DECJNZ. >> >> To solve this problem I wrote a preprocess pass which is run just before >> PHIE...
2006 Apr 29
2
[LLVMdev] Register allocation in LLVM
...raph in most of the cases. I've downloaded LLVM last week, and started studying the code. Basically, I have to implement: 1) A new register allocation pass, similar to the class RA in RegAllocLocal.cpp, for instance; 2) Replace the phi deconstruction algorithm, which I found in the class PNE (PHIElimination.cpp); I would like to implement an algorithm that uses XOR instructions instead of copy instructions to destroy phi functions. It is the algorithm described in "Optimal register allocation for SSA-form programs in polynomial time, Inf. Process. Lett, 98(4)", or in "Register Allo...
2012 Sep 18
0
[LLVMdev] liveness assertion problem in llc
...MPACT compiler). Until last month, the backend was working fine, but since the r161643 commit by stoklund, my backend doesn't work anymore. I think I noticed some related commits later on, and the assertion I get on the latest trunk (r164162) differs from what I got on r161643 (where it was the PHIelimination that failed). From the log, I have the impression that the assertion is raised on a dead instruction during the spill weight calculation. The dead instruction (definition of vreg12 in the log below) is an instruction I add during if-conversion for use in a later pass. Previously, such dead ins...
2018 Sep 20
2
Liveness Analysis
Where is the liveness analysis pass? I have been looking for days but cannot find anything. I just want to know transfer variables in and out of basic blocks, that are calculated using simple data flow equations. Thanks! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180920/529bce15/attachment.html>
2006 May 01
0
[LLVMdev] Register allocation in LLVM
...udying the code. Cool, that looks like a nice algorithm! > Basically, I have to implement: > > 1) A new register allocation pass, similar to the class RA in > RegAllocLocal.cpp, for instance; Yup. > 2) Replace the phi deconstruction algorithm, which I found in the class > PNE (PHIElimination.cpp); I would like to implement an algorithm that > uses XOR instructions instead of copy instructions to destroy phi > functions. It is the algorithm described in "Optimal register allocation > for SSA-form programs in polynomial time, Inf. Process. Lett, 98(4)", or > in...
2012 Sep 18
2
[LLVMdev] liveness assertion problem in llc
...MPACT compiler). Until last month, the backend was working fine, but since the r161643 commit by stoklund, my backend doesn't work anymore. I think I noticed some related commits later on, and the assertion I get on the latest trunk (r164162) differs from what I got on r161643 (where it was the PHIelimination that failed). From the log, I have the impression that the assertion is raised on a dead instruction during the spill weight calculation. The dead instruction (definition of vreg12 in the log below) is an instruction I add during if-conversion for use in a later pass. Previously, such dead ins...
2017 Jun 15
2
LLC does not do proper copy propagation (or copy coalescing)
...PEAT; The above code has the deficiencies created basically by PHI elimination and not applying a proper register copy propagation on machine instructions before Register Allocation. I see 3 options to address my problem: - implement a case that handles this in PHI elimination (PHIElimination.cpp); - create a new pass that does copy propagation (based on DFA) on machine instructions before Register Allocation; - optimize copy coalescing such as the standard one or the one activated by -pbqp-coalescing in lib/CodeGen/RegAllocPBQP.cpp (there is an email also about PBQ...
2010 Jun 02
2
[LLVMdev] Flags and Custom Inserters in code generation
What guarantees, if any, does the scheduler make when two selection nodes are linked by a Flag type? Can I expect the machine instructions that are selected from the two nodes to be scheduled consecutively? I'm trying to implement code generation for SELECT_CC nodes in a back end that I'm working on. The compare operations on the architecture communicate via bits in a global status
2012 May 18
1
[LLVMdev] LiveIntervalAnalysis
I'm debugging a problem with a custom pass and I was surprised to discover that LiveIntervalAnalysis depends on PHIElimination. Why is that so? Intervals could be useful for all sorts of things beyond register allocation. Just curious. Is there something about the design of LiveIntervals that it needs the out-of-SSA conversion? -Dave
2012 Aug 24
2
[LLVMdev] info on coming out of SSA form
Hi, I am a newbie to llvm. I am wondering what approach is used when coming out of SSA form. I also appreciate pointers on where to look in the source code for this phase. Best regards, Ram Ramshankar -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120824/87feb1d3/attachment.html>
2012 Aug 27
0
[LLVMdev] info on coming out of SSA form
...manarayanan, Ramshankar <Ramshankar.Ramanarayanan at amd.com> wrote: > Hi, > > > > I am a newbie to llvm. I am wondering what approach is used when coming out > of SSA form. I also appreciate pointers on where to look in the source code > for this phase. > lib/CodeGen/PHIElimination.cpp is probably what you want. > > Best regards, > > Ram Ramshankar > Cheers, Rafael
2013 Feb 10
0
[LLVMdev] Deleting LiveVariables
.... > > My thinking was to keep a list of all global live ranges in LiveIntervals so we at least don't have to go through all the local virtual registers when splitting a critical edge. (That's how LiveVariables is updated now, and it's slow). I checked in LiveIntervals support to PHIElimination in r174831. I encountered all of the usual edge cases in 'make check', so hopefully it has no latent bugs. I'll add a splitEdge() method to LiveIntervalAnalysis (got a better name?) that does things the slow way first, and then we can speed it up. Cameron
2005 Nov 18
1
[LLVMdev] help with phi elimination/ register allocation
...d be providing would be the number of registers. The intention is to analyze the type of applications that stress the register allocator more. Just wanted to know if LLVM already has passes which I can run to get such info. Towards this end ,after some help on the irc channel , I checked out the PHIElimination pass , is it possible to run that pass on the bytecode file using opt I have checked and found that opt --help doesn't have any option of running just the phi elimination pass. Does this mean the phi elimination pass is run only when generating code for a target ? Thanks Abhijit
2006 May 02
1
[LLVMdev] How to link the right libraries?
...ple, for the X86, I have to add them in the X86TargetMachine.cpp file, is it right? I am a little confused about where to register passes, though. For instance, the passes "phi-node-elimination", and "TwoAddressInstructionPass" are registered in TwoAddressInstructionPass.cpp and PHIElimination.cpp, but what does determine that the PHI elimination pass is executed first? Also, why the register allocation pass is added directly to the pass manager in X86TargetMachine, and the same does not happen to the PHI elimination pass? Thanks a lot, Fernando
2006 Jun 03
1
[LLVMdev] Help with pass ordering
Dear llvm guys, I am trying to add the BreakCriticalEdges pass to my application. I tried to add it to the PNE pass (e.g. PHIElimination.cpp - AU.addRequiredID(BreakCriticalEdgesID); ), but I get this error: llc -f -regalloc=simple Base1Sum.bc -o simple.s ----------------------------------------------- llc: PassManagerT.h:387: void llvm::PassManagerT<Trait>::markPassUsed(const llvm::PassInfo*, llvm::Pass*) [with Trait =...