https://gcc.gnu.org/bugzilla/show_bug.cgi?id=18041
--- Comment #10 from Segher Boessenkool <segher at gcc dot gnu.org> --- If combine tries to split RTL into two instructions, it tries to do that one way (and one way only). It picked the AND here. It did not work. You can add some define_split to your target to help combine along.