summaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000.h
diff options
context:
space:
mode:
authormeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-03-11 18:57:23 +0000
committermeissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-03-11 18:57:23 +0000
commiteaca156e87ff515026a3c88e55bb9ce5a1e772ad (patch)
treeb5fa20378e26ae7489158972aa94a5c3eecf201d /gcc/config/rs6000/rs6000.h
parentadf612cb6ffaf5501f3bbbe19882e2a10c530297 (diff)
downloadgcc-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.h11
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 ();