https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93346
--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:9592f639ff4655203f1cffb7c6752696e2721fb0 commit r10-6171-g9592f639ff4655203f1cffb7c6752696e2721fb0 Author: Jakub Jelinek <ja...@redhat.com> Date: Thu Jan 23 12:39:13 2020 +0100 i386: Use bzhi for x & ((1 << y) - 1) or x & ((1U << y) - 1) [PR93346] The bzhi patterns are quite complicated because they need to accurately describe the behavior of the instruction for all input values. The following patterns are simple and make bzhi recognizable even for cases where not all input values are valid, because the user used a shift, in which case the low 8 bit of the last operand need to be in between 0 and precision-1. 2020-01-23 Jakub Jelinek <ja...@redhat.com> PR target/93346 * config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3): New define_insn patterns. * gcc.target/i386/pr93346.c: New test.