fr30.md (movsf_constant_store): Move code to detect 0.0 into fr30.c.

* config/fr30/fr30.md (movsf_constant_store): Move code to detect 0.0 into fr30.c.
* config/fr30/fr30-protos.h (fr30_const_double_is_zero): Prototype.
* config/fr30/fr30.c (fr30_const_double_is_zero): New function.  Return true if the rtx is 0.0.

From-SVN: r59349
This commit is contained in:
Nick Clifton 2002-11-21 16:36:52 +00:00 committed by Nick Clifton
parent 4d938a0912
commit 3d5ee65b2e
4 changed files with 28 additions and 9 deletions

View File

@ -1,3 +1,12 @@
2002-11-21 Nick Clifton <nickc@redhat.com>
* config/fr30/fr30.md (movsf_constant_store): Move code to
detect 0.0 into fr30.c.
* config/fr30/fr30-protos.h (fr30_const_double_is_zero):
Prototype.
* config/fr30/fr30.c (fr30_const_double_is_zero): New
function. Return true if the rtx is 0.0.
2002-11-21 Jason Thorpe <thorpej@wasabisystems.com>
* config/arm/elf.h (ASM_SPEC, LINK_SPEC): Pass -EL

View File

@ -1,5 +1,5 @@
/* Prototypes for fr30.c functions used in the md file & elsewhere.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -39,6 +39,7 @@ extern int low_register_operand PARAMS ((rtx, Mmode));
extern int call_operand PARAMS ((rtx, Mmode));
extern int di_operand PARAMS ((rtx, Mmode));
extern int nonimmediate_di_operand PARAMS ((rtx, Mmode));
extern int fr30_const_double_is_zero PARAMS ((rtx));
#undef Mmode
#endif /* HAVE_MACHINE_MODES */
#endif /* RTX_CODE */

View File

@ -951,6 +951,20 @@ fr30_check_multiple_regs (operands, num_operands, descending)
return 1;
}
int
fr30_const_double_is_zero (operand)
rtx operand;
{
REAL_VALUE_TYPE d;
if (operand == NULL || GET_CODE (operand) != CONST_DOUBLE)
return 0;
REAL_VALUE_FROM_CONST_DOUBLE (d, operand);
return REAL_VALUES_EQUAL (d, dconst0);
}
/*}}}*/
/*{{{ Instruction Output Routines */

View File

@ -1,5 +1,5 @@
;; FR30 machine description.
;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
;; Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
;; Contributed by Cygnus Solutions.
;; This file is part of GNU CC.
@ -571,14 +571,9 @@
const char * ldi_instr;
const char * tmp_reg;
static char buffer[100];
REAL_VALUE_TYPE d;
REAL_VALUE_FROM_CONST_DOUBLE (d, operands[1]);
if (REAL_VALUES_EQUAL (d, dconst0))
ldi_instr = \"ldi:8\";
else
ldi_instr = \"ldi:32\";
ldi_instr = fr30_const_double_is_zero (operands[1])
? ldi_instr = \"ldi:8\" : \"ldi:32\";
tmp_reg = reg_names [COMPILER_SCRATCH_REGISTER];