[llvm-dev] Working on FP SCEV Analysis
Daniel Berlin via llvm-dev
llvm-dev at lists.llvm.org
Tue May 17 18:14:52 PDT 2016
On Tue, May 17, 2016 at 5:17 PM, Saito, Hideki via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> >What situations are they common in?
> ICC Vectorizer made a paradigm shift a while ago.
> If there aren’t a clear reason why something can’t be vectorized, we
> should try our best to vectorize.
> The rest is a performance modeling (and priority to implement) question,
> not a capability question.
> We believe this is a good paradigm to follow in a vectorizer development.
In some sense, yes, but not at all possible costs.
There needs to be some actual motivating case to make it worth even writing
the code for.
> It was a big departure from
> “vectorize when all things look nice to vectorizer”.
These are not diametrically opposed.
I mean, it may be not worth the cost of mainintaing the *compiler code* to
do o it.
This isn't the same as "when things look nice to the vectorizer", it's more
"we're willing to vectorize whatever we can, as long as someone is going to
actually use it".
Nobody has here provided a useful set of cases/applications/etc that
suggests it should be done. I'm not saying there are none, i'm saying,
literally, nobody has motivated this use case yet :)
> We shouldn’t give up vectorizing simply because programmer wrote a FP
> induction code.(*)
We shouldn't add code to the compiler just because we can.
I would similarly be against, for example, vectorizing loops with binary
coded decimal induction variables, and adding an entire BCD SCEV
infrastructure, without some motivating case *somewhere*.
So i suggest y'all start from: "Here are the cases we care about making
faster, and why we care about making them faster".
In compilers, building infrastructure first, then finding customers works a
lot worse than figuring out what customers want, and then building
infrastructure for them :)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev