<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi All,</p>
<p>@Sander, thanks a lot for the clear and concise summary of the
whole effort. <br>
</p>
<blockquote type="cite"
cite="mid:CAPH-gfedVigDk-or2dFXrF+1MdDkBN7nb8ozOUguy2YcJvaZjw@mail.gmail.com">
<div dir="ltr">
<div dir="ltr"><br>
</div>
<div dir="ltr">On Wed, 11 Nov 2020 at 22:06, Sander De Smalen
<<a href="mailto:Sander.DeSmalen@arm.com"
moz-do-not-send="true">Sander.DeSmalen@arm.com</a>>
wrote:<br>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">We (Arm) prefer starting
out with adding support for 1 in upstream LLVM, because it
is the easiest to support and gives a lot of ‘bang for buck’
that will help us incrementally add more scalable auto-vec
capabilities to the vectorizer. A proof of concept of what
this style of vectorization requires was shared on
Phabricator recently: <a
href="https://reviews.llvm.org/D90343" rel="noreferrer"
target="_blank" moz-do-not-send="true">https://reviews.llvm.org/D90343</a>.<br>
<br>
Barcelona Supercomputer Centre shared a proof of concept for
style 2 that uses the Vector Predication Intrinsics proposed
by Simon Moll (VP: <a
href="https://reviews.llvm.org/D57504" rel="noreferrer"
target="_blank" moz-do-not-send="true">https://reviews.llvm.org/D57504</a>,
link to the POC: <a
href="https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi"
rel="noreferrer" target="_blank" moz-do-not-send="true">https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi</a>).
In the past Arm has shared an alternative implementation of
2 which predates the Vector Predication intrinsics (<a
href="https://reviews.llvm.org/D87056" rel="noreferrer"
target="_blank" moz-do-not-send="true">https://reviews.llvm.org/D87056</a>).<br>
</blockquote>
<div><br>
</div>
<div>I think both are equally good. The third one seems a bit
too restrictive to me (but I'm probably missing something).</div>
<div><br>
</div>
<div>I have previously recommended (1) for the sake of
simplicity in implementation (one step at a time), but I
don't see anything wrong in us trying both, even at the same
time. Or even a merged way where you first vectorise, then
predicate, then fuse the tail.</div>
</div>
</div>
</blockquote>
<p>I should have mentioned this earlier, but our first
implementation was also the first approach (unpredicated vector
body, scalar tail). It gave us a good base for implementing the
2nd approach on top, which was mostly modifying parts of the
existing tail-folding infrastructure and use a TTI hook to decide
to emit VP intrinsics. It does make a lot of sense to start with
the first approach in the upstream. It will also let everyone get
a taste of auto-vectorization for scalable vectors and give us a
base for more insightful discussions on the best way to support
other approaches on top of it. <br>
</p>
<blockquote type="cite"
cite="mid:CAPH-gfedVigDk-or2dFXrF+1MdDkBN7nb8ozOUguy2YcJvaZjw@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div><br>
</div>
<div>We have enough interested parties that we can try out
multiple solutions and pick the best ones, or all of them.
And as you say, they'll all use the same plumbing, so it's
more sharing than competing.</div>
<br>
</div>
</div>
</blockquote>
<p><br>
</p>
<p>Thanks and Regards,</p>
<p>Vineet<br>
</p>
<br>
<br>
WARNING / LEGAL TEXT: This message is intended only for the use of the
individual or entity to which it is addressed and may contain
information which is privileged, confidential, proprietary, or exempt
from disclosure under applicable law. If you are not the intended
recipient or the person responsible for delivering the message to the
intended recipient, you are strictly prohibited from disclosing,
distributing, copying, or in any way using this message. If you have
received this communication in error, please notify the sender and
destroy and delete any copies you may have received.
<br><br>
<a href="http://www.bsc.es/disclaimer">http://www.bsc.es/disclaimer</a>
<br>
</body>
</html>