From f1d214332f7bd57d0ebd97c5580f01e4fda46558 Mon Sep 17 00:00:00 2001 From: kenner Date: Fri, 10 Dec 1993 12:40:23 +0000 Subject: [PATCH] (easy_fp_constant): Use input_operand to see if each word can be loaded in one insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@6200 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/config/rs6000/rs6000.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 415c90e3853..0477d4ac53d 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -287,13 +287,9 @@ reg_or_cint_operand (op, mode) return GET_CODE (op) == CONST_INT || gpc_reg_operand (op, mode); } -/* Return 1 if the operand is a CONST_DOUBLE and it can be put into a - register with one instruction per word. For SFmode, this means that - the low 16-bits are zero. For DFmode, it means the low 16-bits of - the first word are zero and the high 16 bits of the second word - are zero (usually all bits in the low-order word will be zero). - - We only do this if we can safely read CONST_DOUBLE_{LOW,HIGH}. */ +/* Return 1 if the operand is a CONST_DOUBLE and it can be put into a register + with one instruction per word. We only do this if we can safely read + CONST_DOUBLE_{LOW,HIGH}. */ int easy_fp_constant (op, mode) @@ -310,12 +306,11 @@ easy_fp_constant (op, mode) high = operand_subword (op, 0, 0, mode); low = operand_subword (op, 1, 0, mode); - if (high == 0 || GET_CODE (high) != CONST_INT || (INTVAL (high) & 0xffff)) + if (high == 0 || ! input_operand (high, word_mode)) return 0; return (mode == SFmode - || (low != 0 && GET_CODE (low) == CONST_INT - && (INTVAL (low) & 0xffff0000) == 0)); + || (low != 0 && input_operand (low, word_mode))); } /* Return 1 if the operand is either a floating-point register, a pseudo -- 2.11.0