Commit e61c29e9 by David S. Miller Committed by David S. Miller

sparc.c (sparc_absnegfloat_split_legitimate): New function.

	* config/sparc/sparc.c (sparc_absnegfloat_split_legitimate): New
	function.
	* config/sparc/sparc.h: Declare it.
	* config/sparc/sparc.md (float abs/neg splits): Use it.
	(all other splits): Handle SUBREGs properly where necessary.
	(unnamed (1<<x)-1 V8PLUS pattern): Disable for now.

From-SVN: r21981
parent 8e710788
Tue Aug 25 19:17:59 1998 David S. Miller <davem@pierdol.cobaltmicro.com>
* config/sparc/sparc.c (sparc_absnegfloat_split_legitimate): New
function.
* config/sparc/sparc.h: Declare it.
* config/sparc/sparc.md (float abs/neg splits): Use it.
(all other splits): Handle SUBREGs properly where necessary.
(unnamed (1<<x)-1 V8PLUS pattern): Disable for now.
Tue Aug 25 19:48:46 1998 Jeffrey A Law (law@cygnus.com) Tue Aug 25 19:48:46 1998 Jeffrey A Law (law@cygnus.com)
* reorg.c (fill_simple_delay_slots): Do not abort if we encounter * reorg.c (fill_simple_delay_slots): Do not abort if we encounter
......
...@@ -4743,7 +4743,7 @@ order_regs_for_local_alloc () ...@@ -4743,7 +4743,7 @@ order_regs_for_local_alloc ()
mem<-->reg splits to be run. */ mem<-->reg splits to be run. */
int int
sparc_splitdi_legitimate(reg, mem) sparc_splitdi_legitimate (reg, mem)
rtx reg; rtx reg;
rtx mem; rtx mem;
{ {
...@@ -4767,6 +4767,27 @@ sparc_splitdi_legitimate(reg, mem) ...@@ -4767,6 +4767,27 @@ sparc_splitdi_legitimate(reg, mem)
return 1; return 1;
} }
/* Return 1 if x and y are some kind of REG and they refer to
different hard registers. This test is guarenteed to be
run after reload. */
int
sparc_absnegfloat_split_legitimate (x, y)
rtx x, y;
{
if (GET_CODE (x) == SUBREG)
x = alter_subreg (x);
if (GET_CODE (x) != REG)
return 0;
if (GET_CODE (y) == SUBREG)
y = alter_subreg (y);
if (GET_CODE (y) != REG)
return 0;
if (REGNO (x) == REGNO (y))
return 0;
return 1;
}
/* Return 1 if REGNO (reg1) is even and REGNO (reg1) == REGNO (reg2) - 1. /* Return 1 if REGNO (reg1) is even and REGNO (reg1) == REGNO (reg2) - 1.
This makes them candidates for using ldd and std insns. This makes them candidates for using ldd and std insns.
......
...@@ -3243,6 +3243,7 @@ extern void sparc_emit_set_const32 (); ...@@ -3243,6 +3243,7 @@ extern void sparc_emit_set_const32 ();
extern void sparc_emit_set_const64 (); extern void sparc_emit_set_const64 ();
extern void sparc_emit_set_symbolic_const64 (); extern void sparc_emit_set_symbolic_const64 ();
extern int sparc_splitdi_legitimate (); extern int sparc_splitdi_legitimate ();
extern int sparc_absnegfloat_split_legitimate ();
extern char *output_cbranch (); extern char *output_cbranch ();
extern char *output_return (); extern char *output_return ();
......
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