https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97642
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by hongtao Liu <liuho...@gcc.gnu.org>: https://gcc.gnu.org/g:35c4c67e6c534ef3d6ba7a7752ab7e0fbc91755b commit r11-5696-g35c4c67e6c534ef3d6ba7a7752ab7e0fbc91755b Author: liuhongt <hongtao....@intel.com> Date: Tue Nov 3 17:26:43 2020 +0800 Fix incorrect replacement of vmovdqu32 with vpblendd which can cause fault. gcc/ChangeLog: PR target/97642 * config/i386/i386-expand.c (ix86_expand_special_args_builtin): Don't move all-ones mask operands into register. * config/i386/sse.md (UNSPEC_MASKLOAD): New unspec. (*<avx512>_load<mode>_mask): New define_insns for masked load instructions. (<avx512>_load<mode>_mask): Changed to define_expands which specifically handle memory or all-ones mask operands. (<avx512>_blendm<mode>): Changed to define_insns which are same as original <avx512>_load<mode>_mask with adjustment of operands order. (*<avx512>_load<mode>): New define_insn_and_split which is used to optimize for masked load with all one mask. gcc/testsuite/ChangeLog: * gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust testcase to make sure only masked load instruction is generated. * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto. * gcc.target/i386/avx512f-vmovapd-1.c: Ditto. * gcc.target/i386/avx512f-vmovaps-1.c: Ditto. * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto. * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto. * gcc.target/i386/avx512vl-vmovapd-1.c: Ditto. * gcc.target/i386/avx512vl-vmovaps-1.c: Ditto. * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto. * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto. * gcc.target/i386/pr97642-1.c: New test. * gcc.target/i386/pr97642-2.c: New test.