search for: regallocbase

Displaying 20 results from an estimated 22 matches for "regallocbase".

Did you mean: regallocbasic
2018 Jan 09
1
Suggestions on register allocation by using reinforcement learning
Hi everyone, I'm quite new to LLVM *and doing a Q-learning *(*just a hobby*)* on register allocation for LLVM. RegAllocRL is based on* *RegAllocBase*,* RegAllocBasic and add some feature to implement Q-learning algorithm. * *I*’*ve currently run as MachineFunctionPass and things seem to work in simple case. In order to make progress on training*, *I have questions and want to get some help:* 1. *Is there any file data format used in LLVM...
2015 May 20
2
[LLVMdev] Implement a Register Allocator in LLVM
I'm working on my project for completion undergraduate courses, consisting of an experimental analysis of registers allocation algorithms. For this task, I am using the set of tools from the LLVM project. However, I have read the documentation of the LLVM project and not yet found a way to put the pieces of the puzzle together. So far I know: - As passes work as engage them to LLVM and
2010 Nov 02
2
[LLVMdev] Static Profiling Algorithms in LLVM
My god! I would love a branch predictor! It would simplify many aspects of my register allocator. Second, I am surprised it did not make it into the tree. Since more is being done with register allocation as a while "RegAllocBasic" was just put in, I hope this is looked at again. Do you have a working svn copy? Also, could you send me a copy/link to that '94 paper off the list
2015 Mar 06
2
[LLVMdev] PBQP spilling
...is not even a serious alternative to RegAllocGreedy at the moment, due to the poor handling of spilling. As Arnaud wrote below, it is not optimizing spilling at all, but rather just spills anything that does not get an assignment. The result is a lot more spill/reload instructions than needed. In RegAllocBase.h it says "...Register allocation complexity, and generated code performance is determined by the effectiveness of live range splitting rather than optimal coloring...". I would then think that any register allocation algorithm should benefit from this, but find that only RegAllocGreedy i...
2010 Nov 03
2
[LLVMdev] Static Profiling Algorithms in LLVM
You said it was expensive, but if you had to put a big-o estimate on it, what would it be? -Thanks Jeff Kunkel On Tue, Nov 2, 2010 at 8:54 PM, Andrei Alvares <logytech at gmail.com> wrote: > Hello Jeff, > > On Tue, Nov 2, 2010 at 9:17 PM, Jeff Kunkel <jdkunk3 at gmail.com> wrote: > > My god! I would love a branch predictor! It would simplify many aspects > of >
2010 Nov 03
0
[LLVMdev] Static Profiling Algorithms in LLVM
Hello Jeff, On Tue, Nov 2, 2010 at 9:17 PM, Jeff Kunkel <jdkunk3 at gmail.com> wrote: > My god! I would love a branch predictor! It would simplify many aspects of > my register allocator. The branch predictor of the implementation is not as accurate as the one from the paper, but it is close enough. Unfortunately, the branch predictor is a very expensive pass, because it relies on
2010 Nov 03
0
[LLVMdev] Static Profiling Algorithms in LLVM
Hi Jeff, There is an algorithm to build the dominator tree that is O(n2), where n is the number of nodes on the control flow graph. I believe exists another that is linear, but I don't which one of them is implemented in LLVM. The problem is that the branch predictor requires post dominance information. None of the LLVM basic passes require post dominance information (AFAIK), hence it is
2015 Mar 09
2
[LLVMdev] PBQP spilling
...ative to > RegAllocGreedy at the moment, due to the poor handling of spilling. As > Arnaud wrote below, it is not optimizing spilling at all, but rather just > spills anything that does not get an assignment. The result is a lot more > spill/reload instructions than needed. > > In RegAllocBase.h it says “…Register allocation complexity, and generated > code performance is determined by the effectiveness of live range splitting > rather than optimal coloring…”. I would then think that any register > allocation algorithm should benefit from this, but find that only > RegAllocGr...
2011 Sep 26
0
[LLVMdev] Greedy Register Allocation in LLVM 3.0
Just a quick question: is greedy still a local allocator (i.e. only takes into consideration the current bb) or a global one (takes into consideration the whole function)? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110926/d87aa2bd/attachment.html> -------------- next part -------------- A non-text
2015 Mar 10
2
[LLVMdev] PBQP spilling
...not even a serious alternative to RegAllocGreedy at the moment, due to the poor handling of spilling. As Arnaud wrote below, it is not optimizing spilling at all, but rather just spills anything that does not get an assignment. The result is a lot more spill/reload instructions than needed. In RegAllocBase.h it says “…Register allocation complexity, and generated code performance is determined by the effectiveness of live range splitting rather than optimal coloring…”. I would then think that any register allocation algorithm should benefit from this, but find that only RegAllocGreedy is doing live r...
2011 Jul 25
1
[LLVMdev] live information
Hi, I'm working on live intervals and I'm curious about how LLVM typically would represent live info. Take the following case (after SimpleRegisterCoalescer): BB#3: derived from LLVM BB %bb.nph Live Ins: %a0_h Predecessors according to CFG: BB#2 %reg16500<def> = COPY %reg16499 Successors according to CFG: BB#4 BB#4: derived from LLVM BB %for.body21 Live Ins:
2014 Mar 09
2
[LLVMdev] Evaluating the register allocators
Hello, I'm trying to evaluate the different register allocation algorithms on LLVM using the same level of optimizations. Using version 3.3 the current register allocators available to use are "basic, fast, greedy and pbqp". However, I'm facing the following issues: 1) I can't run basic and PBQP allocators using the command line flags of the dragonegg
2015 Mar 04
2
[LLVMdev] PBQP spilling
Hi, I would like to ask about PBQPs use of InlineSpiller. The code output when using PBQP gets a lot bigger compared to when using RegAllocGreedy. PBQP does not split the live intervals, and a lot more (often redundant) reload instructions are emitted as a result, it seems. I wonder why this is, and if there are any plans to improve on this point? /Jonas Paulsson -------------- next part
2010 Nov 02
0
[LLVMdev] Static Profiling Algorithms in LLVM
Thanks Andrei! I haven't read the paper. I would see whether this fulfills my requirements or whether I need to make any changes. --Kapil On Tue, Nov 2, 2010 at 12:43 PM, Andrei Alvares <logytech at gmail.com> wrote: > Hello Kapil, > > I have implemented a static profiler for LLVM as a google summer of > code project in 2009. I wrote it for the 2.4 branch, but the >
2011 Sep 19
6
[LLVMdev] Greedy Register Allocation in LLVM 3.0
I just uploaded a blog post outlining the new register allocation algorithm in LLVM 3.0. http://blog.llvm.org/2011/09/greedy-register-allocation-in-llvm-30.html Please direct comments here. /jakob
2011 Sep 27
5
[LLVMdev] Greedy Register Allocation in LLVM 3.0
On Sep 26, 2011, at 4:22 AM, Leo Romanoff wrote: > Hi Jakob, > > Thanks for a very interesting description of the new register allocation algorithm in LLVM!!! > > Could you elaborate a bit on the following topics: > > 1) Do you have any plans to publish something more formal and detailed about this algorithm, e.g. a paper or something similar? It would be nice to better
2010 Nov 02
2
[LLVMdev] Static Profiling Algorithms in LLVM
Hello Kapil, I have implemented a static profiler for LLVM as a google summer of code project in 2009. I wrote it for the 2.4 branch, but the implementation never made into the tree. I have recently ported it to LLVM 2.8, but I haven't tested it. You can take a look at the code from: http://homepages.dcc.ufmg.br/~rimsa/tools/stprof-llvm.patch The implementation is based on Wu's
2012 Nov 17
2
[LLVMdev] Running pass 'Greedy Register Allocator' leads to Segmentation fault (core dumped)
...1af75 llvm::LiveRangeEdit::eliminateDeadDefs(llvm::SmallVectorImpl<llvm::MachineInstr*>&, llvm::ArrayRef<unsigned int>) + 949 5 libLLVM-3.1.so 0x00002b989ebf2142 6 libLLVM-3.1.so 0x00002b989ebf297c 7 libLLVM-3.1.so 0x00002b989ecacb67 8 libLLVM-3.1.so 0x00002b989ec9ed65 llvm::RegAllocBase::allocatePhysRegs() + 181 9 libLLVM-3.1.so 0x00002b989ecad4ce 10 libLLVM-3.1.so 0x00002b989ec4eb10 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 96 11 libLLVM-3.1.so 0x00002b989ede6731 llvm::FPPassManager::runOnFunction(llvm::Function&) + 561 12 libLLVM-3.1.so 0x00002b989...
2016 Mar 10
2
Greedy register allocator allocates live sub-register
Hi all, I've come across a problem with register allocation which I have been unable to track down the root cause of. 6728B %vreg304<def> = COPY %vreg278; VRF128:%vreg304,%vreg278 6736B %vreg302<def> = COPY %vreg278; VRF128:%vreg302,%vreg278 6752B %vreg278<def,tied1> = foo %vreg278<tied0>, %vreg277, 14, pred:1, pred:%noreg, 5; VRF128:%vreg278 VRF64_l:%vreg277 * bar
2011 Sep 27
0
[LLVMdev] Greedy Register Allocation in LLVM 3.0
Hi Jakob, Hi Andy, First of all, thanks a lot for very elaborative and interesting answers! > It may be more helpful to explain how LLVM's register allocator came > into existence before debating the high level algorithm. > > When I began working on LLVM last October, Jakob was developing an > infrastructure for global live range splitting. It was just becoming > clear