https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118510
--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Hongyu Wang <hong...@gcc.gnu.org>: https://gcc.gnu.org/g:af4fb245e12f2dd8e2c32167c9acfaceb4b6af6a commit r15-7036-gaf4fb245e12f2dd8e2c32167c9acfaceb4b6af6a Author: Hongyu Wang <hongyu.w...@intel.com> Date: Fri Jan 17 09:04:17 2025 +0800 i386: Fix wrong insn generated by shld/shrd ndd split [PR118510] For shld/shrd_ndd_2 insn, the spiltter outputs wrong pattern that mixed parallel for clobber and set. Use register_operand as dest and ajdust output template to fix. gcc/ChangeLog: PR target/118510 * config/i386/i386.md (*x86_64_shld_ndd_2): Use register_operand for operand[0] and adjust the output template to directly generate ndd form shld pattern. (*x86_shld_ndd_2): Likewise. (*x86_64_shrd_ndd_2): Likewise. (*x86_shrd_ndd_2): Likewise. gcc/testsuite/ChangeLog: PR target/118510 * gcc.target/i386/pr118510.c: New test.