On Thu, Feb 14, 2019 at 1:30 PM H.J. Lu <[email protected]> wrote:
>
> Emulate MMX movntq with SSE2 movntidi. Only SSE register source operand
> is allowed.
There is no SSE register source operand. Probably "Only register
source operand is allowed."
Uros.
>
> PR target/89021
> * config/i386/mmx.md (sse_movntq): Add SSE2 emulation.
> ---
> gcc/config/i386/mmx.md | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
> index 0c08aebb071..274e895f51e 100644
> --- a/gcc/config/i386/mmx.md
> +++ b/gcc/config/i386/mmx.md
> @@ -214,12 +214,16 @@
> })
>
> (define_insn "sse_movntq"
> - [(set (match_operand:DI 0 "memory_operand" "=m")
> - (unspec:DI [(match_operand:DI 1 "register_operand" "y")]
> + [(set (match_operand:DI 0 "memory_operand" "=m,m")
> + (unspec:DI [(match_operand:DI 1 "register_operand" "y,r")]
> UNSPEC_MOVNTQ))]
> - "TARGET_SSE || TARGET_3DNOW_A"
> - "movntq\t{%1, %0|%0, %1}"
> - [(set_attr "type" "mmxmov")
> + "(TARGET_MMX || TARGET_MMX_WITH_SSE)
> + && (TARGET_SSE || TARGET_3DNOW_A)"
> + "@
> + movntq\t{%1, %0|%0, %1}
> + movnti\t{%1, %0|%0, %1}"
> + [(set_attr "mmx_isa" "native,x64")
> + (set_attr "type" "mmxmov,ssemov")
> (set_attr "mode" "DI")])
>
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> --
> 2.20.1
>