On 2/16/19, H.J. Lu <hjl.to...@gmail.com> wrote:
> With SSE emulation of MMX intrinsics, we should make _mm_empty () as NOP
> when MMX is disabled.
>
>       PR target/89021
>       * config/i386/mmx.md (mmx_<emms>): Renamed to ...
>       (mmx_<emms>_1): This.
>       (mmx_<emms>): New expander.
> ---
>  gcc/config/i386/mmx.md | 29 ++++++++++++++++++++++++++++-
>  1 file changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
> index 9cf0251293a..0f925c0b1ea 100644
> --- a/gcc/config/i386/mmx.md
> +++ b/gcc/config/i386/mmx.md
> @@ -1848,7 +1848,34 @@
>    [(UNSPECV_EMMS "emms")
>     (UNSPECV_FEMMS "femms")])
>
> -(define_insn "mmx_<emms>"
> +(define_expand "mmx_<emms>"
> +  [(unspec_volatile [(const_int 0)] EMMS)
> +   (clobber (reg:XF ST0_REG))
> +   (clobber (reg:XF ST1_REG))
> +   (clobber (reg:XF ST2_REG))
> +   (clobber (reg:XF ST3_REG))
> +   (clobber (reg:XF ST4_REG))
> +   (clobber (reg:XF ST5_REG))
> +   (clobber (reg:XF ST6_REG))
> +   (clobber (reg:XF ST7_REG))
> +   (clobber (reg:DI MM0_REG))
> +   (clobber (reg:DI MM1_REG))
> +   (clobber (reg:DI MM2_REG))
> +   (clobber (reg:DI MM3_REG))
> +   (clobber (reg:DI MM4_REG))
> +   (clobber (reg:DI MM5_REG))
> +   (clobber (reg:DI MM6_REG))
> +   (clobber (reg:DI MM7_REG))]
> +  "TARGET_MMX || TARGET_MMX_WITH_SSE"
> +{
> +   if (TARGET_MMX)
> +     emit_insn (gen_mmx_<emms>_1 ());
> +   else
> +     emit_insn (gen_nop ());
> +   DONE;

The above should be written as:

if (!TARGET_MMX)
  {
    emit_insn (gen_nop ()));
    DONE;
  }

> +})
> +
> +(define_insn "mmx_<emms>_1"

The old insn should be renamed to "*mmx_<emms>".

Uros.

>    [(unspec_volatile [(const_int 0)] EMMS)
>     (clobber (reg:XF ST0_REG))
>     (clobber (reg:XF ST1_REG))
> --
> 2.20.1
>
>

Reply via email to