https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118727
--- Comment #2 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- line 1408, tree-vect-patterns.cc: if (gimple_call_internal_fn (abd_stmt) == IFN_ABD) { if (!vect_look_through_possible_promotion (vinfo, abd_oprnd0, &unprom[0]) || !vect_look_through_possible_promotion (vinfo, abd_oprnd1, &unprom[1])) return NULL; } it seems suspicious: the sign of ABD operands matters so we cannot let vect_look_through_possible_promotion strip away the sign changes.