https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101956
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Component|target |tree-optimization Last reconfirmed| |2021-08-18 Blocks| |53947 Status|UNCONFIRMED |NEW --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- vectorizable_conversion only checks case NONE: if (code != FIX_TRUNC_EXPR && code != FLOAT_EXPR && !CONVERT_EXPR_CODE_P (code)) return false; if (supportable_convert_operation (code, vectype_out, vectype_in, &code1)) break; /* FALLTHRU */ unsupported: if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "conversion not supported by target.\n"); return false; compared to WIDEN/NARROW which supoort multi-step conversions. It shouldn't be too difficult to teach the NONE case to do this (are there any conversion instructions that do more than 2x widen/narrow?) IMHO this should be addressed at the vectorizer level. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947 [Bug 53947] [meta-bug] vectorizer missed-optimizations