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