https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71153
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Created attachment 38509 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38509&action=edit Full fix which needs full testing I think I have a full fix. Basically there is no reason why we can't expand directly to the LSE instruction directly instead of doing a split after reload. This exposes the NOT and NEG (for MINUS) early on which then gets optimized like normal RTL. I have not done a bootstrap/test yet but I can do it on a machine which has LSE support in a few minutes.