https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56160
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Target| |x86_64-linux-gnu Component|middle-end |target --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is just IV-OPTs going wrong. One thing which I will note does improve the code is doing: __m128 n = _mm_cmpneq_ps(res, res); int need = _mm_movemask_ps(n); if (UNLIKELY(need)) { comp_mult(r, a, b, i); } else _mm_store_ps((float*)&r[i], res);