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>
* config/i386/mmintrin.h: New file.
......
......@@ -108,6 +108,7 @@ extern rtx i386_simplify_dwarf_addr PARAMS ((rtx));
extern void ix86_expand_clear PARAMS ((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,
enum machine_mode, rtx[]));
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,
tree, int));
extern rtx ix86_function_value PARAMS ((tree));
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));
#endif
......
......@@ -2089,8 +2089,6 @@ enum ix86_builtins
IX86_BUILTIN_CVTSS2SI,
IX86_BUILTIN_CVTTPS2PI,
IX86_BUILTIN_CVTTSS2SI,
IX86_BUILTIN_M_FROM_INT,
IX86_BUILTIN_M_TO_INT,
IX86_BUILTIN_MAXPS,
IX86_BUILTIN_MAXSS,
......@@ -2215,7 +2213,6 @@ enum ix86_builtins
IX86_BUILTIN_LDMXCSR,
IX86_BUILTIN_STMXCSR,
IX86_BUILTIN_SFENCE,
IX86_BUILTIN_PREFETCH,
/* 3DNow! Original */
IX86_BUILTIN_FEMMS,
......@@ -2238,8 +2235,6 @@ enum ix86_builtins
IX86_BUILTIN_PFSUBR,
IX86_BUILTIN_PI2FD,
IX86_BUILTIN_PMULHRW,
IX86_BUILTIN_PREFETCH_3DNOW, /* PREFETCH already used */
IX86_BUILTIN_PREFETCHW,
/* 3DNow! Athlon Extensions */
IX86_BUILTIN_PF2IW,
......@@ -2249,16 +2244,7 @@ enum ix86_builtins
IX86_BUILTIN_PSWAPDSI,
IX86_BUILTIN_PSWAPDSF,
/* Composite builtins, expand to more than one insn. */
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_SSE_ZERO,
IX86_BUILTIN_MMX_ZERO,
IX86_BUILTIN_MAX
......
......@@ -34,11 +34,11 @@
#include <mmintrin.h>
/* 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. */
typedef int __v4sf __attribute__ ((mode (V4SF)));
typedef int __v4si __attribute__ ((mode (V4SI)));
typedef int __v4sf __attribute__ ((__mode__(__V4SF__)));
typedef int __v4si __attribute__ ((__mode__(__V4SI__)));
/* Create a selector for use with the SHUFPS instruction. */
#define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \
......@@ -680,7 +680,7 @@ _mm_movemask_ps (__m128 __A)
static __inline unsigned int
_mm_getcsr (void)
{
return __builtin_ia32_getmxcsr ();
return __builtin_ia32_stmxcsr ();
}
/* Read exception bits from the control register. */
......@@ -712,7 +712,7 @@ _MM_GET_FLUSH_ZERO_MODE (void)
static __inline void
_mm_setcsr (unsigned int __I)
{
__builtin_ia32_setmxcsr (__I);
__builtin_ia32_ldmxcsr (__I);
}
/* 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