https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110986
--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- It turns out we should only turn `(a ? -1 : 0) ^ b` into a conditional not if that exists. Even on armv8-a without SVE we get on the trunk: cmtst v31.8h, v31.8h, v31.8h eor v31.16b, v31.16b, v30.16b vs GCC 13: not v1.16b, v2.16b cmeq v0.8h, v0.8h, #0 bsl v0.16b, v2.16b, v1.16b Anyways still have a patch for the same type case. But it now depends on getting conditional not in place.