[llvm-dev] [RFC] Porting MachinePipeliner to AArch64+SVE

Masaki Arai via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 11 05:23:09 PDT 2018


Hi,

Thank you very much for your comments.

Florian Hahn <florian.hahn at arm.com> writes:
> IIUC from having a first look at your patch, there is nothing SVE
> specific there so far. Although it potentially will be very useful for
> SVE, it should also be beneficial for AArch64 without SVE and X86,
> right?

Yes.
Our significant target is FUJITSU's AArch64+SVE CPU, but I think
MachinePipeliner is beneficial for AArch 64 without SVE or any ILP
RISC CPUs.
However, I'm not sure for x86.

> As there are no scheduling models available for SVE in LLVM
> yet, I suppose it would be a good motivation if you could show some
> benefit on existing AArch64 or X86 cores with your proposed modelling.

It is easy to make a small test set that can confirm performance
improvement.
However, I think there are many challenges to make MachinePipeliner
really beneficial on AArch64 without SVE for actual applications.
For example,
(a) Preparing the appropriate machine model for scheduling
(b) Consideration of register pressure in AArch64
    (Coordination with register allocation pass)
(c) Extending iteration dependence distance (2 or more)
(d) Consideration of the impact of VPlan's estimation
    (Coordination with VPlan)
(e) Consideration of the impact of loop optimizations
    (especially loop distribution)
(f) Consideration of the impact of flang

I would like to make it work only when option `-enable-pipeliner' is
specified until these issues are solved.

> IMO it makes sense to go with (b), given that the dispatch overhead
> should be tiny compared to the other work that's going on and we also
> added similar hooks to the generic machine scheduler recently. But it
> seems like this is a smaller implementation detail and making sure we
> are getting the modelling aspect right is more important.

One of the reasons for posting the RFC is that MachinePipeliner is
updated frequently.
Therefore, I would like to hear the opinion of MachinePipeliner
developers.
I am glad to make any patches, but since I do not have a Hexagon
environment, I'm worried whether I can thoroughly test them.

Best regards,
--
--------------------------------------
Masaki Arai
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180611/6c2ff1ef/attachment.html>


More information about the llvm-dev mailing list