Commit e37af218 by Richard Henderson Committed by Richard Henderson

i386.c (override_options): If SSE, enable sse prefetch.

        * config/i386/i386.c (override_options): If SSE, enable sse prefetch.
        (ix86_expand_vector_move): New.
        (bdesc_2arg): Remove andps, andnps, orps, xorps.
        (ix86_init_mmx_sse_builtins): Make static.  Remove composite builtins.
        Remove old prefetch builtins.  Special case the logicals removed above.
        (ix86_expand_builtin): Likewise.
        (safe_vector_operand): Use V4SFmode, not TImode.
        (ix86_expand_store_builtin): Remove shuffle arg.  Update callers.
        (ix86_expand_timode_binop_builtin): New.
        * config/i386/i386-protos.h: Update.
        * config/i386/i386.h (enum ix86_builtins): Update.
        * config/i386/i386.md: Correct predicates on MMX/SSE patterns.
        Use ix86_expand_vector_move in vector move expanders.
        (movti_internal, movti_rex64): Add xorps alternative.
        (sse_clrv4sf): Rename and adjust from sse_clrti.
        (prefetch): Don't work so hard.
        (prefetch_sse, prefetch_3dnow): Use PREFETCH rtx, not UNSPEC.
        * config/i386/xmmintrin.h (__m128): Use V4SFmode.
        (_mm_getcsr, _mm_setcsr): Fix typo in builtin name.

From-SVN: r48796
parent b0d723da
2002-01-12 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (override_options): If SSE, enable sse prefetch.
(ix86_expand_vector_move): New.
(bdesc_2arg): Remove andps, andnps, orps, xorps.
(ix86_init_mmx_sse_builtins): Make static. Remove composite builtins.
Remove old prefetch builtins. Special case the logicals removed above.
(ix86_expand_builtin): Likewise.
(safe_vector_operand): Use V4SFmode, not TImode.
(ix86_expand_store_builtin): Remove shuffle arg. Update callers.
(ix86_expand_timode_binop_builtin): New.
* config/i386/i386-protos.h: Update.
* config/i386/i386.h (enum ix86_builtins): Update.
* config/i386/i386.md: Correct predicates on MMX/SSE patterns.
Use ix86_expand_vector_move in vector move expanders.
(movti_internal, movti_rex64): Add xorps alternative.
(sse_clrv4sf): Rename and adjust from sse_clrti.
(prefetch): Don't work so hard.
(prefetch_sse, prefetch_3dnow): Use PREFETCH rtx, not UNSPEC.
* config/i386/xmmintrin.h (__m128): Use V4SFmode.
(_mm_getcsr, _mm_setcsr): Fix typo in builtin name.
2002-01-11 Richard Henderson <rth@redhat.com> 2002-01-11 Richard Henderson <rth@redhat.com>
* config/i386/mmintrin.h: New file. * config/i386/mmintrin.h: New file.
......
...@@ -108,6 +108,7 @@ extern rtx i386_simplify_dwarf_addr PARAMS ((rtx)); ...@@ -108,6 +108,7 @@ extern rtx i386_simplify_dwarf_addr PARAMS ((rtx));
extern void ix86_expand_clear PARAMS ((rtx)); extern void ix86_expand_clear PARAMS ((rtx));
extern void ix86_expand_move PARAMS ((enum machine_mode, rtx[])); extern void ix86_expand_move PARAMS ((enum machine_mode, rtx[]));
extern void ix86_expand_vector_move PARAMS ((enum machine_mode, rtx[]));
extern void ix86_expand_binary_operator PARAMS ((enum rtx_code, extern void ix86_expand_binary_operator PARAMS ((enum rtx_code,
enum machine_mode, rtx[])); enum machine_mode, rtx[]));
extern int ix86_binary_operator_ok PARAMS ((enum rtx_code, enum machine_mode, extern int ix86_binary_operator_ok PARAMS ((enum rtx_code, enum machine_mode,
...@@ -177,7 +178,6 @@ extern void function_arg_advance PARAMS ((CUMULATIVE_ARGS *, enum machine_mode, ...@@ -177,7 +178,6 @@ extern void function_arg_advance PARAMS ((CUMULATIVE_ARGS *, enum machine_mode,
tree, int)); tree, int));
extern rtx ix86_function_value PARAMS ((tree)); extern rtx ix86_function_value PARAMS ((tree));
extern void ix86_init_builtins PARAMS ((void)); extern void ix86_init_builtins PARAMS ((void));
extern void ix86_init_mmx_sse_builtins PARAMS ((void));
extern rtx ix86_expand_builtin PARAMS ((tree, rtx, rtx, enum machine_mode, int)); extern rtx ix86_expand_builtin PARAMS ((tree, rtx, rtx, enum machine_mode, int));
#endif #endif
......
...@@ -2089,8 +2089,6 @@ enum ix86_builtins ...@@ -2089,8 +2089,6 @@ enum ix86_builtins
IX86_BUILTIN_CVTSS2SI, IX86_BUILTIN_CVTSS2SI,
IX86_BUILTIN_CVTTPS2PI, IX86_BUILTIN_CVTTPS2PI,
IX86_BUILTIN_CVTTSS2SI, IX86_BUILTIN_CVTTSS2SI,
IX86_BUILTIN_M_FROM_INT,
IX86_BUILTIN_M_TO_INT,
IX86_BUILTIN_MAXPS, IX86_BUILTIN_MAXPS,
IX86_BUILTIN_MAXSS, IX86_BUILTIN_MAXSS,
...@@ -2215,7 +2213,6 @@ enum ix86_builtins ...@@ -2215,7 +2213,6 @@ enum ix86_builtins
IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_LDMXCSR,
IX86_BUILTIN_STMXCSR, IX86_BUILTIN_STMXCSR,
IX86_BUILTIN_SFENCE, IX86_BUILTIN_SFENCE,
IX86_BUILTIN_PREFETCH,
/* 3DNow! Original */ /* 3DNow! Original */
IX86_BUILTIN_FEMMS, IX86_BUILTIN_FEMMS,
...@@ -2238,8 +2235,6 @@ enum ix86_builtins ...@@ -2238,8 +2235,6 @@ enum ix86_builtins
IX86_BUILTIN_PFSUBR, IX86_BUILTIN_PFSUBR,
IX86_BUILTIN_PI2FD, IX86_BUILTIN_PI2FD,
IX86_BUILTIN_PMULHRW, IX86_BUILTIN_PMULHRW,
IX86_BUILTIN_PREFETCH_3DNOW, /* PREFETCH already used */
IX86_BUILTIN_PREFETCHW,
/* 3DNow! Athlon Extensions */ /* 3DNow! Athlon Extensions */
IX86_BUILTIN_PF2IW, IX86_BUILTIN_PF2IW,
...@@ -2249,16 +2244,7 @@ enum ix86_builtins ...@@ -2249,16 +2244,7 @@ enum ix86_builtins
IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSI,
IX86_BUILTIN_PSWAPDSF, IX86_BUILTIN_PSWAPDSF,
/* Composite builtins, expand to more than one insn. */ IX86_BUILTIN_SSE_ZERO,
IX86_BUILTIN_SETPS1,
IX86_BUILTIN_SETPS,
IX86_BUILTIN_CLRPS,
IX86_BUILTIN_SETRPS,
IX86_BUILTIN_LOADPS1,
IX86_BUILTIN_LOADRPS,
IX86_BUILTIN_STOREPS1,
IX86_BUILTIN_STORERPS,
IX86_BUILTIN_MMX_ZERO, IX86_BUILTIN_MMX_ZERO,
IX86_BUILTIN_MAX IX86_BUILTIN_MAX
......
...@@ -34,11 +34,11 @@ ...@@ -34,11 +34,11 @@
#include <mmintrin.h> #include <mmintrin.h>
/* The data type indended for user use. */ /* The data type indended for user use. */
typedef int __m128 __attribute__ ((mode (TI))); typedef int __m128 __attribute__ ((__mode__(__V4SF__)));
/* Internal data types for implementing the instrinsics. */ /* Internal data types for implementing the instrinsics. */
typedef int __v4sf __attribute__ ((mode (V4SF))); typedef int __v4sf __attribute__ ((__mode__(__V4SF__)));
typedef int __v4si __attribute__ ((mode (V4SI))); typedef int __v4si __attribute__ ((__mode__(__V4SI__)));
/* Create a selector for use with the SHUFPS instruction. */ /* Create a selector for use with the SHUFPS instruction. */
#define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \ #define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \
...@@ -680,7 +680,7 @@ _mm_movemask_ps (__m128 __A) ...@@ -680,7 +680,7 @@ _mm_movemask_ps (__m128 __A)
static __inline unsigned int static __inline unsigned int
_mm_getcsr (void) _mm_getcsr (void)
{ {
return __builtin_ia32_getmxcsr (); return __builtin_ia32_stmxcsr ();
} }
/* Read exception bits from the control register. */ /* Read exception bits from the control register. */
...@@ -712,7 +712,7 @@ _MM_GET_FLUSH_ZERO_MODE (void) ...@@ -712,7 +712,7 @@ _MM_GET_FLUSH_ZERO_MODE (void)
static __inline void static __inline void
_mm_setcsr (unsigned int __I) _mm_setcsr (unsigned int __I)
{ {
__builtin_ia32_setmxcsr (__I); __builtin_ia32_ldmxcsr (__I);
} }
/* Set exception bits in the control register. */ /* Set exception bits in the control register. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment