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.