search for: regallocgreedy

Displaying 20 results from an estimated 35 matches for "regallocgreedy".

2014 Mar 12
3
[LLVMdev] llc debug info
...debug info using opt like this: opt < a.bc > /dev/null -mypass -debug But I don't know how to do it using llc. I check http://llvm.org/docs/CommandGuide/llc.html there are not any information about debug flags. Purpose EX: I want to print all the DEBUG(dbgs()......) in llvm/lib/CodeGen/RegAllocGreedy.cpp . What should I do? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140312/51de0de7/attachment.html>
2015 Mar 06
2
[LLVMdev] PBQP spilling
Hi, I have worked a little on the PBQP register allocator, and it is quite clear (at least to me) that it 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...
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 -------------- An HTML attachment was scrubbed... UR...
2017 Oct 27
2
Less aggressive on the first allocation of CSR if detecting an early exit
...he very early uses of CSRs in the entry block. So CSR spills/reloads are executed even when the early exit block is taken. int getI(int i); int foo(int *P, int i) { if (i>0) return P[i]; i = getI(i); return P[i]; } It's not that hard to find such cases where RegAllocGreedy aggressively allocates a CSRs when a live range expands across a call-site. That's because of the conservatively initialized CSRCost, causing RegAllocGreedy to strongly favour allocating a CSR over splitting a region. Since allocation of CSRs requires the cost of spilling CSRs, allocating CSRs...
2015 Mar 09
2
[LLVMdev] PBQP spilling
...rote: > Hi Jonas, > > On Mar 6, 2015, at 12:31 AM, Jonas Paulsson <jonas.paulsson at ericsson.com> > wrote: > > Hi, > > I have worked a little on the PBQP register allocator, and it is quite > clear (at least to me) that it 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 “…Reg...
2017 Oct 30
2
Less aggressive on the first allocation of CSR if detecting an early exit
...ken. >> >> int getI(int i); >> >> int foo(int *P, int i) { >> >> if (i>0) >> >> return P[i]; >> >> i = getI(i); >> >> return P[i]; >> >> } >> >> It's not that hard to find such cases where RegAllocGreedy >> aggressively allocates a CSRs when a live range expands across a >> call-site. That's because of the conservatively initialized >> CSRCost, causing RegAllocGreedy to strongly favour allocating a CSR >> over splitting a region. Since allocation of CSRs requires the co...
2015 Mar 10
2
[LLVMdev] PBQP spilling
...ombet <qcolombet at apple.com> wrote: Hi Jonas, On Mar 6, 2015, at 12:31 AM, Jonas Paulsson <jonas.paulsson at ericsson.com> wrote: Hi, I have worked a little on the PBQP register allocator, and it is quite clear (at least to me) that it 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 comp...
2011 Sep 28
0
[LLVMdev] Greedy Register Allocation in LLVM 3.0
...ncomparable to 3.0. If it does eventually get thrown away and replaced, then a version number can capture that. That makes a lot of sense to me. None of the algorithm details are sacred, and there is a good chance something essential will have changed by 3.1 and 3.2. Meanwhile, I am keeping the RegAllocGreedy.cpp file name and the llc -regalloc=greedy command line option. /jakob
2011 Sep 28
3
[LLVMdev] Greedy Register Allocation in LLVM 3.0
On Sep 27, 2011, at 12:11 AM, Leo Romanoff wrote: > > > It is true that names are not always reflecting the essense. But on the other hand, there is a lot of ongoing research on register allocation (and compilers in general) and it looks like more and more such efforts choose LLVM as a platform for experimentation. Quite some results and comparisons are published. So, it would be nice
2017 Oct 31
2
Less aggressive on the first allocation of CSR if detecting an early exit
...;> >>>> if (i>0) >>>> >>>> return P[i]; >>>> >>>> i = getI(i); >>>> >>>> return P[i]; >>>> >>>> } >>>> >>>> It's not that hard to find such cases where RegAllocGreedy >>>> aggressively allocates a CSRs when a live range expands across a >>>> call-site. That's because of the conservatively initialized >>>> CSRCost, causing RegAllocGreedy to strongly favour allocating a CSR >>>> over splitting a region. Since al...
2018 Sep 10
2
linear-scan RA
...? Thanks, Preston On Mon, Sep 10, 2018 at 9:57 AM, Matthias Braun <mbraun at apple.com> wrote: > I would not describe LLVMs register allocator as linear scan, it's closer > to graph coloring than linear scan IMO (though doesn't really matcher > either approach). > > RegAllocGreedy assigns the registers in an order based on the priority > value computed in enqueu() we are not just scanning from top to bottom of > the program. We also perform actual interference checks we just don't > happen to build up an explicit interference graph up front. > > - Matthias...
2010 Dec 28
0
[LLVMdev] Latest build warnings
...er expressions <dir>/llvm/lib/Analysis/InstructionSimplify.cpp:260: warning: comparison between signed and unsigned integer expressions <dir>/llvm/lib/Analysis/InstructionSimplify.cpp:279: warning: comparison between signed and unsigned integer expressions <dir>/llvm/lib/CodeGen/RegAllocGreedy.cpp:382: warning: ‘BestWeight’ may be used uninitialized in this function <dir>/llvm/lib/CodeGen/RegAllocGreedy.cpp:382: note: ‘BestWeight’ was declared here <dir>/llvm/lib/MC/TargetAsmBackend.cpp:34: warning: comparison between signed and unsigned integer expressions ================...
2018 Sep 10
2
linear-scan RA
Why have we ended up using linear-scan register allocation by default (instead of, e.g., coloring)? Thanks, Preston -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180910/2f468e56/attachment.html>
2017 Nov 10
2
Less aggressive on the first allocation of CSR if detecting an early exit
...ken. >> >> int getI(int i); >> >> int foo(int *P, int i) { >> >> if (i>0) >> >> return P[i]; >> >> i = getI(i); >> >> return P[i]; >> >> } >> >> It's not that hard to find such cases where RegAllocGreedy >> aggressively allocates a CSRs when a live range expands across a >> call-site. That's because of the conservatively initialized >> CSRCost, causing RegAllocGreedy to strongly favour allocating a CSR >> over splitting a region. Since allocation of CSRs requires the co...
2018 Sep 10
2
linear-scan RA
...Mon, Sep 10, 2018 at 9:57 AM, Matthias Braun <mbraun at apple.com> wrote: > >> I would not describe LLVMs register allocator as linear scan, it's closer >> to graph coloring than linear scan IMO (though doesn't really matcher >> either approach). >> >> RegAllocGreedy assigns the registers in an order based on the priority >> value computed in enqueu() we are not just scanning from top to bottom of >> the program. We also perform actual interference checks we just don't >> happen to build up an explicit interference graph up front. >>...
2011 Sep 16
1
[LLVMdev] Linear scan is going away after 3.0
...; EarlyClobber, kill and def slot for early-clobber operands. DEF -> Register, kill and def slot for normal register operands. STORE -> Dead, kill slot for dead defs. - Linear scan depends of physical register coalescing to generate good ABI code. It has been disabled by default because RegAllocGreedy doesn't need it. With linear scan gone, the code can be removed completely. That will clean up RegisterCoalescer quite a bit. If you are writing a new register allocator, use RABasic as a template. This simple allocator doesn't use any of the obsolete code. It uses InlineSpiller::spil...
2017 Nov 16
2
Less aggressive on the first allocation of CSR if detecting an early exit
...So CSR spills/reloads are executed even when the early exit block is >> taken. >> int getI(int i); >> int foo(int *P, int i) { >> if (i>0) >> return P[i]; >> i = getI(i); >> return P[i]; >> } >> It's not that hard to find such cases where RegAllocGreedy >> aggressively allocates a CSRs when a live range expands across a >> call-site. That's because of the conservatively initialized >> CSRCost, causing RegAllocGreedy to strongly favour allocating a CSR >> over splitting a region. Since allocation of CSRs requires the co...
2017 Nov 17
2
Less aggressive on the first allocation of CSR if detecting an early exit
...So CSR spills/reloads are executed even when the early exit block is >> taken. >> int getI(int i); >> int foo(int *P, int i) { >> if (i>0) >> return P[i]; >> i = getI(i); >> return P[i]; >> } >> It's not that hard to find such cases where RegAllocGreedy >> aggressively allocates a CSRs when a live range expands across a >> call-site. That's because of the conservatively initialized >> CSRCost, causing RegAllocGreedy to strongly favour allocating a CSR >> over splitting a region. Since allocation of CSRs requires the co...
2018 Sep 11
2
linear-scan RA
...7 AM, Matthias Braun <mbraun at apple.com> wrote: >> >>> I would not describe LLVMs register allocator as linear scan, it's >>> closer to graph coloring than linear scan IMO (though doesn't really >>> matcher either approach). >>> >>> RegAllocGreedy assigns the registers in an order based on the priority >>> value computed in enqueu() we are not just scanning from top to bottom of >>> the program. We also perform actual interference checks we just don't >>> happen to build up an explicit interference graph up fro...
2011 Jan 20
0
[LLVMdev] Warnings when compiling llvm+clang (Mac OS X system gcc)
Hi, There are some warnings in the LLVM and clang code bases: ---------------------------- llvm[0]: Compiling RegAllocGreedy.cpp for Release+Asserts build /Users/filcab/dev/stuff/llvm/llvm/include/llvm/ADT/SmallVector.h: In member function ‘void<unnamed>::RAGreedy::calcLiveBlockInfo(llvm::LiveInterval&)’: /Users/filcab/dev/stuff/llvm/llvm/include/llvm/ADT/SmallVector.h:325: warning: ‘BC.llvm::SpillPlacement::Bl...