https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110986
--- Comment #17 from Andrew Pinski <pinskia at gcc dot gnu.org> --- For the scalar version we could match: (set (reg:SI 106) (xor:SI (neg:SI (ne:SI (reg:CC 66 cc) (const_int 0 [0]))) (reg:SI 107 [ MEM[(int *)a_14(D) + ivtmp.14_9 * 1] ]))) In the backend to do the csinv but it might not catch all of them because combine does not match everything.