[llvm-commits] Tuning LLVM Greedy Register Allocator to optimize for code size when targeting ARM Thumb 2 instruction set

Zino Benaissa zinob at codeaurora.org
Wed Jan 25 20:02:07 PST 2012



>> The way to look at it is the other way:
>> 1.       If the offset of load/store is too large then don't bother
assigning R0-7
>> 2.       If both operands of ADD are not kill then don't bother assigning
R0-7
>> 3.       If immediate of ADD is too large don't bother assigning R0-7
>> .
>> The goal is to eliminate  as much as possible candidates that compete for
R0-R7 so that the RA  does a better assignment of R0-R7 (which ultimately
increases 16-bits encoding).
>> Returning 2 fails to do this. You may  as well return 0 instead of 2 J.

>Does this negative bias mean that VirtReg.bytes is 0 for most virtual
registers? How > many get VirtReg.bytes > 0?

Of course it varies and depends on the compiled code. I have seen that
VirtReg.bytes =0 (or close) while this VirtReg occurs frequently in the
function (Which in this case their weight is high). At the same  I have seen
Candidate that have a very high VirtReg.byte and (they were getting a
costPerUse register before this heuristic). Some EEMBC benchmarks shrank
with > 5% and are example of this. 

>As I am reading your changes to the eviction policy, you are completely
replacing >spill weights with a code size metric for live ranges with
Virteg.bytes > 0. Is that >the intention?

It depends why the eviction is invoked. Currently there are three reasons
for invoking eviction: enabling coalescing, preventing spill/split,
preventing a costPerUse register. Note all these evections where already put
in place before my heuristic.
 1) Both for coalescing or for preventing split/spill: VirtReg.bytes=0 and
the heuristic is ignored and only the pair <hint,weight> is considered.
Whatever were put in place is still managing these type of evictions. 
 2) This heuristic is ON only when a candidate gets a register that has a
CostPerUse. In this case, When the RA attempts to trade it for a register
with no cost, Now with this heuristic it has a metric to evaluate whether
there is a trade worth evicting for. 
  

-Zino





More information about the llvm-commits mailing list