mirror of git://gcc.gnu.org/git/gcc.git
Add _mm_stream_si64.
2011-11-18 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. From-SVN: r181491
This commit is contained in:
parent
52e4e221bd
commit
f32c951e2c
|
@ -1,3 +1,23 @@
|
||||||
|
2011-11-18 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.
|
||||||
|
|
||||||
2011-11-18 Georg-Johann Lay <avr@gjlay.de>
|
2011-11-18 Georg-Johann Lay <avr@gjlay.de>
|
||||||
|
|
||||||
PR target/49868
|
PR target/49868
|
||||||
|
|
|
@ -1418,6 +1418,14 @@ _mm_stream_si32 (int *__A, int __B)
|
||||||
__builtin_ia32_movnti (__A, __B);
|
__builtin_ia32_movnti (__A, __B);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __x86_64__
|
||||||
|
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_stream_si64 (long long int *__A, long long int __B)
|
||||||
|
{
|
||||||
|
__builtin_ia32_movnti64 (__A, __B);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
_mm_stream_si128 (__m128i *__A, __m128i __B)
|
_mm_stream_si128 (__m128i *__A, __m128i __B)
|
||||||
{
|
{
|
||||||
|
|
|
@ -111,6 +111,7 @@ DEF_POINTER_TYPE (PDOUBLE, DOUBLE)
|
||||||
DEF_POINTER_TYPE (PFLOAT, FLOAT)
|
DEF_POINTER_TYPE (PFLOAT, FLOAT)
|
||||||
DEF_POINTER_TYPE (PUSHORT, USHORT)
|
DEF_POINTER_TYPE (PUSHORT, USHORT)
|
||||||
DEF_POINTER_TYPE (PINT, INT)
|
DEF_POINTER_TYPE (PINT, INT)
|
||||||
|
DEF_POINTER_TYPE (PLONGLONG, LONGLONG)
|
||||||
DEF_POINTER_TYPE (PULONGLONG, ULONGLONG)
|
DEF_POINTER_TYPE (PULONGLONG, ULONGLONG)
|
||||||
DEF_POINTER_TYPE (PUNSIGNED, UNSIGNED)
|
DEF_POINTER_TYPE (PUNSIGNED, UNSIGNED)
|
||||||
|
|
||||||
|
@ -357,6 +358,7 @@ DEF_FUNCTION_TYPE (VOID, PDOUBLE, V4DF)
|
||||||
DEF_FUNCTION_TYPE (VOID, PFLOAT, V4SF)
|
DEF_FUNCTION_TYPE (VOID, PFLOAT, V4SF)
|
||||||
DEF_FUNCTION_TYPE (VOID, PFLOAT, V8SF)
|
DEF_FUNCTION_TYPE (VOID, PFLOAT, V8SF)
|
||||||
DEF_FUNCTION_TYPE (VOID, PINT, INT)
|
DEF_FUNCTION_TYPE (VOID, PINT, INT)
|
||||||
|
DEF_FUNCTION_TYPE (VOID, PLONGLONG, LONGLONG)
|
||||||
DEF_FUNCTION_TYPE (VOID, PULONGLONG, ULONGLONG)
|
DEF_FUNCTION_TYPE (VOID, PULONGLONG, ULONGLONG)
|
||||||
DEF_FUNCTION_TYPE (VOID, PV2SI, V2SI)
|
DEF_FUNCTION_TYPE (VOID, PV2SI, V2SI)
|
||||||
DEF_FUNCTION_TYPE (VOID, PV2DI, V2DI)
|
DEF_FUNCTION_TYPE (VOID, PV2DI, V2DI)
|
||||||
|
|
|
@ -25341,6 +25341,7 @@ enum ix86_builtins
|
||||||
IX86_BUILTIN_CVTTPS2DQ,
|
IX86_BUILTIN_CVTTPS2DQ,
|
||||||
|
|
||||||
IX86_BUILTIN_MOVNTI,
|
IX86_BUILTIN_MOVNTI,
|
||||||
|
IX86_BUILTIN_MOVNTI64,
|
||||||
IX86_BUILTIN_MOVNTPD,
|
IX86_BUILTIN_MOVNTPD,
|
||||||
IX86_BUILTIN_MOVNTDQ,
|
IX86_BUILTIN_MOVNTDQ,
|
||||||
|
|
||||||
|
@ -26423,7 +26424,8 @@ static const struct builtin_description bdesc_special_args[] =
|
||||||
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movdqu, "__builtin_ia32_storedqu", IX86_BUILTIN_STOREDQU, UNKNOWN, (int) VOID_FTYPE_PCHAR_V16QI },
|
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movdqu, "__builtin_ia32_storedqu", IX86_BUILTIN_STOREDQU, UNKNOWN, (int) VOID_FTYPE_PCHAR_V16QI },
|
||||||
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movntv2df, "__builtin_ia32_movntpd", IX86_BUILTIN_MOVNTPD, UNKNOWN, (int) VOID_FTYPE_PDOUBLE_V2DF },
|
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movntv2df, "__builtin_ia32_movntpd", IX86_BUILTIN_MOVNTPD, UNKNOWN, (int) VOID_FTYPE_PDOUBLE_V2DF },
|
||||||
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movntv2di, "__builtin_ia32_movntdq", IX86_BUILTIN_MOVNTDQ, UNKNOWN, (int) VOID_FTYPE_PV2DI_V2DI },
|
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movntv2di, "__builtin_ia32_movntdq", IX86_BUILTIN_MOVNTDQ, UNKNOWN, (int) VOID_FTYPE_PV2DI_V2DI },
|
||||||
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movntsi, "__builtin_ia32_movnti", IX86_BUILTIN_MOVNTI, UNKNOWN, (int) VOID_FTYPE_PINT_INT },
|
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movntisi, "__builtin_ia32_movnti", IX86_BUILTIN_MOVNTI, UNKNOWN, (int) VOID_FTYPE_PINT_INT },
|
||||||
|
{ OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_64BIT, CODE_FOR_sse2_movntidi, "__builtin_ia32_movnti64", IX86_BUILTIN_MOVNTI64, UNKNOWN, (int) VOID_FTYPE_PLONGLONG_LONGLONG },
|
||||||
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movupd, "__builtin_ia32_loadupd", IX86_BUILTIN_LOADUPD, UNKNOWN, (int) V2DF_FTYPE_PCDOUBLE },
|
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movupd, "__builtin_ia32_loadupd", IX86_BUILTIN_LOADUPD, UNKNOWN, (int) V2DF_FTYPE_PCDOUBLE },
|
||||||
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movdqu, "__builtin_ia32_loaddqu", IX86_BUILTIN_LOADDQU, UNKNOWN, (int) V16QI_FTYPE_PCCHAR },
|
{ OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movdqu, "__builtin_ia32_loaddqu", IX86_BUILTIN_LOADDQU, UNKNOWN, (int) V16QI_FTYPE_PCCHAR },
|
||||||
|
|
||||||
|
@ -29409,6 +29411,7 @@ ix86_expand_special_args_builtin (const struct builtin_description *d,
|
||||||
case VOID_FTYPE_PFLOAT_V4SF:
|
case VOID_FTYPE_PFLOAT_V4SF:
|
||||||
case VOID_FTYPE_PDOUBLE_V4DF:
|
case VOID_FTYPE_PDOUBLE_V4DF:
|
||||||
case VOID_FTYPE_PDOUBLE_V2DF:
|
case VOID_FTYPE_PDOUBLE_V2DF:
|
||||||
|
case VOID_FTYPE_PLONGLONG_LONGLONG:
|
||||||
case VOID_FTYPE_PULONGLONG_ULONGLONG:
|
case VOID_FTYPE_PULONGLONG_ULONGLONG:
|
||||||
case VOID_FTYPE_PINT_INT:
|
case VOID_FTYPE_PINT_INT:
|
||||||
nargs = 1;
|
nargs = 1;
|
||||||
|
|
|
@ -116,6 +116,7 @@
|
||||||
UNSPEC_MASKMOV
|
UNSPEC_MASKMOV
|
||||||
UNSPEC_MOVMSK
|
UNSPEC_MOVMSK
|
||||||
UNSPEC_MOVNT
|
UNSPEC_MOVNT
|
||||||
|
UNSPEC_MOVNTI
|
||||||
UNSPEC_MOVU
|
UNSPEC_MOVU
|
||||||
UNSPEC_RCP
|
UNSPEC_RCP
|
||||||
UNSPEC_RSQRT
|
UNSPEC_RSQRT
|
||||||
|
|
|
@ -573,15 +573,15 @@
|
||||||
(set_attr "prefix" "maybe_vex")
|
(set_attr "prefix" "maybe_vex")
|
||||||
(set_attr "mode" "<sseinsnmode>")])
|
(set_attr "mode" "<sseinsnmode>")])
|
||||||
|
|
||||||
(define_insn "sse2_movntsi"
|
(define_insn "sse2_movnti<mode>"
|
||||||
[(set (match_operand:SI 0 "memory_operand" "=m")
|
[(set (match_operand:SWI48 0 "memory_operand" "=m")
|
||||||
(unspec:SI [(match_operand:SI 1 "register_operand" "r")]
|
(unspec:SWI48 [(match_operand:SWI48 1 "register_operand" "r")]
|
||||||
UNSPEC_MOVNT))]
|
UNSPEC_MOVNTI))]
|
||||||
"TARGET_SSE2"
|
"TARGET_SSE2"
|
||||||
"movnti\t{%1, %0|%0, %1}"
|
"movnti\t{%1, %0|%0, %1}"
|
||||||
[(set_attr "type" "ssemov")
|
[(set_attr "type" "ssemov")
|
||||||
(set_attr "prefix_data16" "0")
|
(set_attr "prefix_data16" "0")
|
||||||
(set_attr "mode" "V2DF")])
|
(set_attr "mode" "<MODE>")])
|
||||||
|
|
||||||
(define_insn "<sse>_movnt<mode>"
|
(define_insn "<sse>_movnt<mode>"
|
||||||
[(set (match_operand:VF 0 "memory_operand" "=m")
|
[(set (match_operand:VF 0 "memory_operand" "=m")
|
||||||
|
|
|
@ -9384,6 +9384,7 @@ v2df __builtin_ia32_loadlpd (v2df, double const *)
|
||||||
int __builtin_ia32_movmskpd (v2df)
|
int __builtin_ia32_movmskpd (v2df)
|
||||||
int __builtin_ia32_pmovmskb128 (v16qi)
|
int __builtin_ia32_pmovmskb128 (v16qi)
|
||||||
void __builtin_ia32_movnti (int *, int)
|
void __builtin_ia32_movnti (int *, int)
|
||||||
|
void __builtin_ia32_movnti64 (long long int *, long long int)
|
||||||
void __builtin_ia32_movntpd (double *, v2df)
|
void __builtin_ia32_movntpd (double *, v2df)
|
||||||
void __builtin_ia32_movntdq (v2df *, v2df)
|
void __builtin_ia32_movntdq (v2df *, v2df)
|
||||||
v4si __builtin_ia32_pshufd (v4si, int)
|
v4si __builtin_ia32_pshufd (v4si, int)
|
||||||
|
|
Loading…
Reference in New Issue