On 3/8/2022 5:56 AM, Richard Biener via Gcc-patches wrote:
This adds a --param to allow disabling of vectorization of
floating point inductions. Ontop of -Ofast this should allow
549.fotonik3d_r to not miscompare.
While I thought of a more elaborate way of disabling certain
vectorization kinds (reductions also came to my mind) this
for now simply uses a --param than some sophisticated -fvectorize-*
scheme.
Bootstrapped and tested on x86_64-unknown-linux-gnu. I've
verified that 549.fotonik3d_r miscompares with -Ofast -march=znver2
and passes when adding --param vect-induction-float=0 which
should be valid at least for peak (but I guess also base for
FOPTIMIZE for example). I did not benchmark against other
workarounds (it has been said -fno-unsafe-math-optimizations
or other similar things work as well).
Those other options do work well to throttle things back for fotonik.
Presumably the idea of having the param is to be more surgical about
what needs to be disabled to keep fotonik happy. Given the benchmark
specific nature of the option, I'm not opposed to it being a param
(primarily for developer use) vs a -f<blah> which are more geared to the
user community.
OK for trunk?
Thanks,
Richard.
2022-03-08 Richard Biener <rguent...@suse.de>
PR tree-optimization/84201
* params.opt (-param=vect-induction-float): Add.
* doc/invoke.texi (vect-induction-float): Document.
* tree-vect-loop.cc (vectorizable_induction): Honor
param_vect_induction_float.
* gcc.dg/vect/pr84201.c: New testcase.
LGTM.
jeff