https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116120
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- That is: ``` v4si f3(v4si a, v4si b, v4si c, v4si d, v4si e, v4si f) { v4si X = a == b; v4si Y = c == d; return ((X^Y) & (e != f)) ? {-1,...} : {0}; } ``` is what we should produce. Note this is still better code generation than the original with `?:`. And for the constant case `e != f` will be reduced to 0/-1 just fine.