[llvm-dev] Usage of splitting heuristic among LLVM register allocators
Quentin Colombet via llvm-dev
llvm-dev at lists.llvm.org
Thu Jan 13 15:38:40 PST 2022
Hi Rohit,
The basic allocator splits live-ranges, but it does that in a very boring way.
Essentially, when you spill, you have to split the live-ranges and that’s what the inline spiller, used by the basic allocator, does.
E.g., let say you have:
a = …
...
= a
...
= a
And you want to spill a.
What the spiller will do is split a into its stored and reloaded components:
a0 = …
st a0
…
a1 = ld
= a1
…
a2 = ld
= a2
As you can see, the split created a0, a1, and a2 from a.
Now, if you’re interested in fancy live-range splitting, then yes, only the greedy allocator does that.
Cheers,
-Quentin
> On Jan 13, 2022, at 1:23 AM, Rohit Aggarwal via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hi All,
>
> As per understanding, only the Greedy register allocator has the splitting heuristic which is implemented using splitkit.cpp. The splitting logic is only present in splitkit.cpp file of llvm codebase.
> Whereas one of the Basic register allocator's comments state that it also performs splitting but I am not able to find any use of api from splitkit.cpp for splitting.
>
> Please clarify in which register allocator splitting heuristic is being used.
>
> Thanks,
> Rohit Aggarwal
>
>
>
> Disclaimer:- This footer text is to convey that this email is sent by one of the users of IITH. So, do not mark it as SPAM.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20220113/f79cb78a/attachment.html>
More information about the llvm-dev
mailing list