]> git.ipfire.org Git - thirdparty/gcc.git/commit
i386: Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 May 2019 15:05:07 +0000 (15:05 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 May 2019 15:05:07 +0000 (15:05 +0000)
commit4cdfb98898530a0637a26fab33d2b053d9334a44
tree1175217033e97657fd12bbfa1a2bea9f9704fcce
parentd1dd9c5e28cc4f2944dc90bf50884f189db18b2a
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271216 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/i386-expand.c
gcc/config/i386/i386-protos.h
gcc/config/i386/mmx.md