Commit 3d5ee65b by Nick Clifton Committed by Nick Clifton

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
parent 4d938a09
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> 2002-11-21 Jason Thorpe <thorpej@wasabisystems.com>
* config/arm/elf.h (ASM_SPEC, LINK_SPEC): Pass -EL * config/arm/elf.h (ASM_SPEC, LINK_SPEC): Pass -EL
......
/* Prototypes for fr30.c functions used in the md file & elsewhere. /* 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. This file is part of GNU CC.
...@@ -39,6 +39,7 @@ extern int low_register_operand PARAMS ((rtx, Mmode)); ...@@ -39,6 +39,7 @@ extern int low_register_operand PARAMS ((rtx, Mmode));
extern int call_operand PARAMS ((rtx, Mmode)); extern int call_operand PARAMS ((rtx, Mmode));
extern int di_operand PARAMS ((rtx, Mmode)); extern int di_operand PARAMS ((rtx, Mmode));
extern int nonimmediate_di_operand PARAMS ((rtx, Mmode)); extern int nonimmediate_di_operand PARAMS ((rtx, Mmode));
extern int fr30_const_double_is_zero PARAMS ((rtx));
#undef Mmode #undef Mmode
#endif /* HAVE_MACHINE_MODES */ #endif /* HAVE_MACHINE_MODES */
#endif /* RTX_CODE */ #endif /* RTX_CODE */
......
...@@ -951,6 +951,20 @@ fr30_check_multiple_regs (operands, num_operands, descending) ...@@ -951,6 +951,20 @@ fr30_check_multiple_regs (operands, num_operands, descending)
return 1; 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 */ /*{{{ Instruction Output Routines */
......
;; FR30 machine description. ;; 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. ;; Contributed by Cygnus Solutions.
;; This file is part of GNU CC. ;; This file is part of GNU CC.
...@@ -571,14 +571,9 @@ ...@@ -571,14 +571,9 @@
const char * ldi_instr; const char * ldi_instr;
const char * tmp_reg; const char * tmp_reg;
static char buffer[100]; static char buffer[100];
REAL_VALUE_TYPE d;
REAL_VALUE_FROM_CONST_DOUBLE (d, operands[1]); ldi_instr = fr30_const_double_is_zero (operands[1])
? ldi_instr = \"ldi:8\" : \"ldi:32\";
if (REAL_VALUES_EQUAL (d, dconst0))
ldi_instr = \"ldi:8\";
else
ldi_instr = \"ldi:32\";
tmp_reg = reg_names [COMPILER_SCRATCH_REGISTER]; tmp_reg = reg_names [COMPILER_SCRATCH_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