[Bug target/106910] roundss not vectorized
crazylht at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Sep 15 09:35:34 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106910
--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> ---
> The vectorizer would go the direct internal fn way for those, querying the
> floor optab but the x86 backend only has scalar modes supported for the
> rounding optabs.
For CFN_BUILT_IN_ICEIL, the modifier is narrow, and currently vectorizable_call
require op_in and op_out to be simple_integer_narrowing, which means it fails
to go the direct internal fn way.
---------cut from vectorizable_call-----------
tree_code convert_code = ERROR_MARK;
if (cfn != CFN_LAST
&& (modifier == NONE
|| (modifier == NARROW
&& simple_integer_narrowing (vectype_out, vectype_in,
&convert_code))))
ifn = vectorizable_internal_function (cfn, callee, vectype_out,
vectype_in);
-----------cut end----------------------
Similar for CFN_BUILT_IN_LCEIL under 32-bit target.
For 64-bit target CFN_BUILT_IN_LCEIL, CFN_BUILT_IN_LLCEIL will go the direct
internal fn way, add lceilmn2 expanders works.
Not sure whether vectorizable_call should be extended or just leave
CFN_BUILT_IN_ICEIL/IFLOOR/IRINT/IROUND part in
ix86_builtin_vectorized_function.
More information about the Gcc-bugs
mailing list