As I suggested in the BZ, this patch rejects constants with just the high bit set for the recently added "bfxil" pattern. As a result we'll return to using "bit" for the test in the BZ. I'm not versed enough in aarch64 performance tuning to know if "bit" is actually a better choice than "bfxil". "bit" results in better code for the testcase, but that seems more a function of register allocation than "bit" being inherently better than "bfxil". Obviously someone with more aarch64 knowledge needs to make a decision here. My first iteration of the patch changed "aarch64_high_bits_all_ones_p". We could still go that way too, though the name probably needs to change. I've bootstrapped and regression tested on aarch64-linux-gnu and it fixes the regression. I've also bootstrapped aarch64_be-linux-gnu, but haven't done any kind of regression tested on that platform. OK for the trunk? Jeff