https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109029
--- Comment #7 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to Hongtao.liu from comment #6)
> (In reply to Hongtao.liu from comment #5)
> > We need to support signbit<mode>2 for vector double/_Float16. Also similar
> > like popcnt, there's a mismatch of input and output between builtin and
> > signbit_optab, it could be handled in vectorizer pattern match.
>
> After support signbit{v2df,v4df,v8df}2, vectorizer still failed, currently,
> we only support simple integer narrowing, but not for v4df->v8si.
>
> 3480 /* First try using an internal function. */
> 3481 tree_code convert_code = ERROR_MARK;
> 3482 if (cfn != CFN_LAST
> 3483 && (modifier == NONE
> 3484 || (modifier == NARROW
> 3485 && simple_integer_narrowing (vectype_out, vectype_in,
> 3486 &convert_code))))
> 3487 ifn = vectorizable_internal_function (cfn, callee, vectype_out,
> 3488 vectype_in);
> 3489
One solution is handling it in ix86_builtin_vectorized_function just like other
math functions which has different input/output sizes.