diff options
author | meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1996-03-11 18:57:23 +0000 |
---|---|---|
committer | meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1996-03-11 18:57:23 +0000 |
commit | eaca156e87ff515026a3c88e55bb9ce5a1e772ad (patch) | |
tree | b5fa20378e26ae7489158972aa94a5c3eecf201d /gcc/config/rs6000/rs6000.h | |
parent | adf612cb6ffaf5501f3bbbe19882e2a10c530297 (diff) | |
download | gcc-eaca156e87ff515026a3c88e55bb9ce5a1e772ad.tar.gz |
Make long longs use normal CONST_DOUBLE in movdi, do not split too early
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11513 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/rs6000.h')
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index f49c687b36b..aa1e5f0af53 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -995,10 +995,14 @@ enum reg_class Here VALUE is the CONST_DOUBLE rtx itself. We flag for special constants when we can copy the constant into - a general register in two insns for DF and one insn for SF. */ + a general register in two insns for DF/DI and one insn for SF. -#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \ - ((C) == 'G' ? easy_fp_constant (VALUE, GET_MODE (VALUE)) : 0) + 'H' is used for DI constants that take 3 insns. */ + +#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \ + ((C) == 'G' ? easy_fp_constant (VALUE, GET_MODE (VALUE)) : \ + (C) == 'H' ? (num_insns_constant (VALUE, DImode) == 3) : \ + 0) /* Optional extra constraints for this machine. @@ -2819,6 +2823,7 @@ extern int reg_or_short_operand (); extern int reg_or_neg_short_operand (); extern int reg_or_u_short_operand (); extern int reg_or_cint_operand (); +extern int num_insns_constant (); extern int easy_fp_constant (); extern int volatile_mem_operand (); extern int offsettable_addr_operand (); |