search for: simpleregistercoalescing

Displaying 20 results from an estimated 65 matches for "simpleregistercoalescing".

2009 Jan 09
4
[LLVMdev] Is it possible to use the SimpleRegisterCoalescing pass in an iterative way?
Hi, I'm implementing some variations of graph-coloring register allocators for LLVM. Many of them perform their phases (e.g. coalescing, graph simplification, spilling, color selection) in an iterative way. Since LLVM provides an implementation of the coalescing in the SimpleRegisterCoalescing class already, I would like to reuse it (even though I could of course create my own coalescing implementation). But this class is a MachineFunctionPass. I'm wondering, if it is possible to use this pass from another pass (i.e. regalloc) in an iterative way: I need to invoke it multiple times...
2009 Jan 12
0
[LLVMdev] Is it possible to use the SimpleRegisterCoalescing pass in an iterative way?
...gt; > I'm implementing some variations of graph-coloring register allocators for > LLVM. Many of them perform their phases (e.g. coalescing, graph > simplification, spilling, color selection) in an iterative way. Since > LLVM provides an implementation of the coalescing in the > SimpleRegisterCoalescing class already, I would like to reuse it (even > though I could of course create my own coalescing implementation). But > this class is a MachineFunctionPass. > > I'm wondering, if it is possible to use this pass from another pass > (i.e. regalloc) in an iterative way: > I need...
2011 Sep 12
3
[LLVMdev] Possible bug in SimpleRegisterCoalescing
While working on a back-end for a target, I've come across something I believe to be a bug in SimpleRegisterCoalescing.cpp. I'm unsure how / whether to report it because I don't think it will necessarily crash or generate incorrect code for any of the supported targets. I believe that there may be a problem in SimpleRegisterCoalescing::runOnMachineFunction where the allocatable registers for each register...
2011 Sep 13
0
[LLVMdev] Possible bug in SimpleRegisterCoalescing
On Sep 12, 2011, at 10:56 AM, Steve Montgomery wrote: > While working on a back-end for a target, I've come across something I believe to be a bug in SimpleRegisterCoalescing.cpp. I'm unsure how / whether to report it because I don't think it will necessarily crash or generate incorrect code for any of the supported targets. > > I believe that there may be a problem in SimpleRegisterCoalescing::runOnMachineFunction where the allocatable registers for each...
2011 Sep 19
1
[LLVMdev] Possible bug in SimpleRegisterCoalescing
...ed building from the trunk and it works, as you'd suggested. On 13 Sep 2011, at 01:00, Jakob Stoklund Olesen wrote: > > On Sep 12, 2011, at 10:56 AM, Steve Montgomery wrote: > >> While working on a back-end for a target, I've come across something I believe to be a bug in SimpleRegisterCoalescing.cpp. I'm unsure how / whether to report it because I don't think it will necessarily crash or generate incorrect code for any of the supported targets. >> >> I believe that there may be a problem in SimpleRegisterCoalescing::runOnMachineFunction where the allocatable registers...
2007 Dec 16
3
[LLVMdev] Question about coalescing
Dear guys, I want to coalesce some copies, and I would like to know if there is any method that I can call, like JoinCopy from the old (LLVM 1.9) LiveIntervals class. I found it in SimpleRegisterCoalescing (LLVM 2.1), but I do not want to call this analysis, as I have my own. basically, I can determine that two virtuals do not overlap, and I know that it is safe to join them. In the old v1.9, I simply had to do this: this->interval_analysis_->JoinCopy(mach_inst, use_eg, def_reg);...
2007 Jul 13
0
[LLVMdev] [PATCH] Re: Pluggable Register Coalescers
...n to be pulled in if the RegisterCoalescing header is +// included. Otherwise we run the risk of RegisterCoalescing being +// used, but the default implementation not being linked into the tool +// that uses it. +FORCE_DEFINING_FILE_TO_BE_LINKED(RegisterCoalescer) +FORCE_DEFINING_FILE_TO_BE_LINKED(SimpleRegisterCoalescing) + +#endif Property changes on: llvm/include/llvm/CodeGen/RegisterCoalescer.h ___________________________________________________________________ Name: svn:eol-style + LF Index: llvm/include/llvm/CodeGen/SimpleRegisterCoalescing.h ===============================================================...
2007 Dec 17
2
[LLVMdev] Question about coalescing
Dear Dave, Evan, thank you for answering. What I did was to remove the implementation of most of the methods of SimpleRegisterCoalescing and put them in a single class (RegisterCoalescer_Impl) that is not an analysis. Any class that wants these methods, can extend this class privately, or can use a reference to an RegisterCoalescer_Impl object. I wish it would be possible to go even further: given that I know that two virtuals d...
2007 Jul 11
3
[LLVMdev] Pluggable Register Coalescers
On Jul 11, 2007, at 11:39 AM, David Greene wrote: > 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
2007 Dec 17
0
[LLVMdev] Question about coalescing
On Dec 15, 2007, at 4:45 PM, Fernando Magno Quintao Pereira wrote: > > Dear guys, > > I want to coalesce some copies, and I would like to know if > there is > any method that I can call, like JoinCopy from the old (LLVM 1.9) > LiveIntervals class. I found it in SimpleRegisterCoalescing (LLVM > 2.1), > but I do not want to call this analysis, as I have my own. > > basically, I can determine that two virtuals do not overlap, and I > know that it is safe to join them. In the old v1.9, I simply had to do > this: > > this->interval_analysis_->Jo...
2007 Dec 17
0
[LLVMdev] Question about coalescing
On Monday 17 December 2007 14:06, Fernando Magno Quintao Pereira wrote: > Dear Dave, Evan, thank you for answering. > > What I did was to remove the implementation of most of the methods of > SimpleRegisterCoalescing and put them in a single class > (RegisterCoalescer_Impl) that is not an analysis. Any class that wants > these methods, can extend this class privately, or can use a reference to > an RegisterCoalescer_Impl object. I wish it would be possible to go even > further: given that I know tha...
2008 Jan 29
2
[LLVMdev] Possible LiveInterval Bug
I just ran into a problem here. I'm in SimpleRegisterCoalescing at the point where EXTRACT_SUBREG coalescing updates live ranges of aliased registers (around line 473 of SimpleRegisterCoalescing.cpp). There's a call to MergeValueInAsValue at line 50. MergeValueInAsValue has this code: void LiveInterval::MergeValueInAsValue(const LiveInterval &RHS,...
2011 Jan 13
1
[LLVMdev] Where is liveness analysis pass?
Hello all Currently I want to use the accurate liveness information when writing a *target independent* FunctionPass based on LLVM. The one I can find is LiveValues, a FunctionPass. But it doesn't use classic dataflow equation and can only provide approximate and conservative result. The another one is LiveVariables which use classic data flow equation, but it comes from Clang's analysis
2011 Jan 13
0
[LLVMdev] Where is liveness analysis pass?
...SlotIndexes::runOnMachineFunction() "lib/CodeGen/SlotIndexes.cpp" --> This pass assigns indexes to each instruction and basic blocks 3. LiveIntervals::runOnMachineFunction() "lib/CodeGen/LiveIntervalAnalysis.cpp" --> This pass computes live interval for live variables. 4. SimpleRegisterCoalescing::runOnMachineFunction "lib/CodeGen/SimpleRegisterCoalescing.cpp" -> After SimpleRegisterCoalescing, live intervals are merged. As you know, liveness inforamtion in backend is target dependent. If you want to use target independent liveness information, I suggest you to use live varia...
2007 Sep 25
2
[LLVMdev] Coalescing and VNInfo
I've hit a bug in a refactored version of coalescing and I'm trying to understand what is going on. In particular, I'm curious about this line in SimpleRegisterCoalescing.cpp: 00710 LHSValsDefinedFromRHS[VNI] = RHS.getLiveRangeContaining(VNI->def-1)->valno; Why VNI->def-1? The bug I'm seeing is that RHS returns a NULL LiveRange because it doesn't contain VNI->def-1: %reg1093,0 = [5750,5754:2)[5754,5782:1)[5782,5858:0)[5868,5870:0) 0...
2007 Jul 03
0
[LLVMdev] Solaris 9 compilation
...lvm::SDOperand LowerVAARG(llvm::SDOperand, llvm::SelectionDAG&, int, int, unsigned int, unsigned int, const llvm::PPCSubtarget&)': /home/ggreif/llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1104: warning: no return statement in function returning non-void 4) /home/ggreif/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp: In member function `virtual bool llvm::SimpleRegisterCoalescing::runOnMachineFunction(llvm::MachineFunction&)': /home/ggreif/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp:1095: error: `powf' was not declared in this scope /home/ggreif/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp:1...
2011 Jan 13
0
[LLVMdev] Where is liveness analysis pass?
...&nbsp;blocks<BR>3.&nbsp;LiveIntervals::runOnMachineFunction()&nbsp;"lib/CodeGen/LiveIntervalAnalysis.cpp"<BR>--&gt;&nbsp;This&nbsp;pass&nbsp;computes&nbsp;live&nbsp;interval&nbsp;for&nbsp;live&nbsp;variables.<BR>4.&nbsp;SimpleRegisterCoalescing::runOnMachineFunction&nbsp;"lib/CodeGen/SimpleRegisterCoalescing.cpp"&nbsp;<BR>-&gt;&nbsp;After&nbsp;SimpleRegisterCoalescing,&nbsp;live&nbsp;intervals&nbsp;are&nbsp;merged.<BR><BR>As&nbsp;you&nbsp;know,&nbsp;liveness&n...
2009 Mar 17
2
[LLVMdev] Looking for a Reaching Definition Analysis
...oping for some direction in finding an instance of where a Reaching Definition Analysis is being implemented within LLVM. I have referenced the sources files, initially hoping to find an explicit ReachingDefinitionAnalysis.cpp file ;-) but with no such luck. Other than that I have found the files SimpleRegisterCoalescing.cpp and the PreAllocSplitting.cpp which are referencing Reaching Definitions (as VNInfo objects), which leads me to believe that Reaching Definitions are created as part of the LiveIntervalAnalysis, which is a MachineFunctionPass. However, I was expecting to find a implementation of RD Analysis ea...
2007 Sep 25
0
[LLVMdev] Coalescing and VNInfo
On Tuesday 25 September 2007 10:49, David Greene wrote: > I've hit a bug in a refactored version of coalescing and I'm trying to > understand what is going on. In particular, I'm curious about this > line in SimpleRegisterCoalescing.cpp: > > 00710 LHSValsDefinedFromRHS[VNI] = > RHS.getLiveRangeContaining(VNI->def-1)->valno; > > Why VNI->def-1? The bug I'm seeing is that RHS returns a NULL > LiveRange because it doesn't contain VNI->def-1: > > %reg1093,0 = [5750,5754:2)[5754,57...
2008 Jan 30
0
[LLVMdev] Possible LiveInterval Bug
AFAIK std::upper_bound() would not return end(), right? Evan On Jan 29, 2008, at 3:08 PM, David Greene wrote: > I just ran into a problem here. I'm in SimpleRegisterCoalescing at > the point > where EXTRACT_SUBREG coalescing updates live ranges of aliased > registers (around line 473 of SimpleRegisterCoalescing.cpp). > > There's a call to MergeValueInAsValue at line 50. > MergeValueInAsValue has > this code: > > void LiveInterval::Merg...