PATCH: PR target/33944: streaming 64-bit integer stores

Uros Bizjak ubizjak@gmail.com
Fri Nov 18 19:53:00 GMT 2011


On Fri, Nov 18, 2011 at 6:58 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:

> _mm_stream_si64 intrinsic is missing.  It is implemented in VC++:
>
> http://msdn.microsoft.com/en-us/library/bb531466.aspx
>
> We are adding it to Intel64 SDM.  Here is a patch to implement it in GCC.
> I added UNSPEC_MOVNTI so that it won't get confused with
>
> (define_insn "sse_movntdi"
>  [(set (match_operand:DI 0 "memory_operand" "=m")
>        (unspec:DI [(match_operand:DI 1 "register_operand" "y")]
>                   UNSPEC_MOVNT))]
>  "TARGET_SSE || TARGET_3DNOW_A"
>  "movntq\t{%1, %0|%0, %1}"
>  [(set_attr "type" "mmxmov")
>   (set_attr "mode" "DI")])
>
> OK for trunk?
>
> Thanks.
>
> H.J.
> ---
> 2011-11-16  H.J. Lu  <hongjiu.lu@intel.com>
>
>        PR target/33944
>        * doc/extend.texi: Document __builtin_ia32_movnti64.
>
>        * config/i386/emmintrin.h (_mm_stream_si64): New.
>
>        * config/i386/i386-builtin-types.def: Add VOID_FTYPE_PLONGLONG_LONGLONG.
>
>        * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTI64.
>        (bdesc_special_args): Update __builtin_ia32_movnti.  Add
>        __builtin_ia32_movnti64.
>        (ix86_expand_special_args_builtin): Handle
>        VOID_FTYPE_PLONGLONG_LONGLONG.
>
>        * config/i386/i386.md (UNSPEC_MOVNTI): New.
>
>        * config/i386/sse.md (sse2_movntsi): Renamed to ...
>        (sse2_movnti<mode>): This.

OK.

Thanks,
Uros.



More information about the Gcc-patches mailing list