This is the mail archive of the
mailing list for the GCC project.
Re: SSE scalar move paterns
- To: Jan Hubicka <jh at suse dot cz>
- Subject: Re: SSE scalar move paterns
- From: Richard Henderson <rth at redhat dot com>
- Date: Mon, 12 Feb 2001 15:44:41 -0800
- Cc: gcc-patches at gcc dot gnu dot org, patches at x86-64 dot org
- References: <20010212231516.B11491@atrey.karlin.mff.cuni.cz>
On Mon, Feb 12, 2001 at 11:15:16PM +0100, Jan Hubicka wrote:
> Only questional bit is probably the 'Y' constraint I define to be SSE_REGS
> when SSE2 is availbale. This is basically just to reduce number of patterns
> in the compiler. Perhaps we should document it as gcc internal.
It's mildly unfortunate that 'x' is SSE1 so that 'y' and 'Y' don't match.
Not worth worrying about, I'd guess.
> * i386.c (print_reg): Use ANY_FP_REG instead of FP_REG
> * i386.h (MASK_128BIT_LONG_DOUBLE): Renumber
> (MASK_SSE2): New.
> (MASK_MIX_SSE_I387): New.
> (TARGET_SSE): SSE2 imply SSE.
> (TARGET_SSE2, TARGET_MIX_SSE_I387): New.
> (TARGET_SWITCHES): Add "sse2", "mix-sse-i387".
> (enum reg_class): Add new classes.
> (REG_CLASS_NAMES): Likewise.
> (REG_CLASS_CONTENTS): Likewise.
> (ANY_FP_REG_P, ANY_FP_REGNO_P, SSE_REG_P, SSE_FLOAT_MODE): New macros.
> (REG_CLASS_FROM_LETTER): 'x' and 'y' is SSE_REGS only when SSE is
> supported. Add 'Y' to be SSE_REGS when SSE2 is supported.
> (CLASS_MAX_NREGS): Use new macros.
> (REGISTER_MOVE_COST): Rewrite using SECONDARY_MEMORY_MAYBE_NEEDED.
> * i386.md (pushsf, movsf): Support SSE.
> (pushdf_nointeger, pushdf_integer, pushdf): Support SSE, update
> splitters to use ANY_FP_REGNO_P.
> (movdf_nointeger, movdf_integer): Likewise.