https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107432
--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> --- > Guess expand_vector_conversion can be optimized. if (INTEGRAL_TYPE_P (TREE_TYPE (ret_type)) && SCALAR_FLOAT_TYPE_P (TREE_TYPE (arg_type))) code = FIX_TRUNC_EXPR; else if (INTEGRAL_TYPE_P (TREE_TYPE (arg_type)) && SCALAR_FLOAT_TYPE_P (TREE_TYPE (ret_type))) code = FLOAT_EXPR; It only supports floatmn2/fix_truncmn2 for float <-> integer. But we can also supports extendmn2/zero_extendmn2/truncmn2 for float <-> float, integer <-> integer. Or are there any concerns and VEC_PACK_TRUNC_EXPR, VEC_PACK_FIX_TRUNC_EXPR,VEC_PACK_FLOAT_EXPR are used on purpose?