i386: Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 15 May 2019 15:05:07 +0000 (15:05 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 15 May 2019 15:05:07 +0000 (08:05 -0700)
commit6e9fffcf83638a50cac6e2a127817c409238cfde
tree1175217033e97657fd12bbfa1a2bea9f9704fcce
parentb74ebb2a36adbb18da52f7eb25b54655b04c7be4
i386: Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX

Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX.  For MMX punpckhXX,
move bits 64:127 to bits 0:63 in SSE register.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/i386-expand.c (ix86_split_mmx_punpck): New function.
* config/i386/i386-protos.h (ix86_split_mmx_punpck): New
prototype.
* config/i386/mmx.m (mmx_punpckhbw): Changed to
define_insn_and_split to support SSE emulation.
(mmx_punpcklbw): Likewise.
(mmx_punpckhwd): Likewise.
(mmx_punpcklwd): Likewise.
(mmx_punpckhdq): Likewise.
(mmx_punpckldq): Likewise.

From-SVN: r271216
gcc/ChangeLog
gcc/config/i386/i386-expand.c
gcc/config/i386/i386-protos.h
gcc/config/i386/mmx.md