https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124180

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rdapp at gcc dot gnu.org,
                   |                            |rsandifo at gcc dot gnu.org,
                   |                            |tnfchris at gcc dot gnu.org

--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #8)
...
> To fully recover from the correctness fix on capable hardware implementing
> a masked float to int conversion is necessary (and possible).

There is currently no conditional conversion optab case, so the general
support would need to be amended.  Similarly if-conversion limits itself
because of that, not even trying.  And then there's the question how to
deal with the fact that currently the vectorizer dispatches between

 fix[uns]_trunc

and

 vec_pack_[us]fix_trunc
 vec_unpack_[us]fix_trunc_{hi,lo}

where the latter are explicitly dealing only with half/double size integers,
thus are not conversion optabs.  And the complications from
vectorizable_conversion would need to be put into vectorizable_call in some
way.

RVV supports same size, double size and half size conversions.  I expect
SVE to do the same, so arbitrary conversion optabs might be unneeded but
then if-conversion might need to put inbetween conversions in and
possibly pre-select between cond_{unpack,pack,}_fix{uns,} given it performs
a (premature) vectorization check on the chosen IFN.

Reply via email to