x86: Also require MMX for __builtin_ia32_maskmovq
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 21 Sep 2020 12:33:46 +0000 (05:33 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 2 Nov 2020 21:38:34 +0000 (13:38 -0800)
commit6058b874ef98af1104a5cb4618e1f3bfa7e3761c
tree1ad3bad4e081c4151b397d6cb43f17471ef5fbf0
parent88ce3d5fbb948cc600800b15f4ca774a0ce8e7a7
x86: Also require MMX for __builtin_ia32_maskmovq

MMX emulation with SEE is implemented at MMX intrinsic level, not at MMX
instruction level.  _mm_maskmove_si64 intrinsic for "MASKMOVQ mm1, mm2"
is emulated with __builtin_ia32_maskmovdqu.  Since SSE "MASKMOVQ mm1, mm2"
builtin function, __builtin_ia32_maskmovq, can't be emulated with XMM
registers, make __builtin_ia32_maskmovq also require MMX instead of SSE
only.

gcc/

PR target/97140
* config/i386/i386-expand.c (ix86_expand_builtin): Require MMX
for __builtin_ia32_maskmovq.

gcc/testsuite/

PR target/97140
* gcc.target/i386/pr97140.c: New test.
gcc/config/i386/i386-expand.c
gcc/testsuite/gcc.target/i386/pr97140.c [new file with mode: 0644]