aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-02-25 06:51:17 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-02-25 06:51:17 -0500
commit914c2e776d6d6ce6da61f4be9982390ef86c018b (patch)
tree22034acc2ccf997fa14a2fe2d0b31e2273ad7551
parentc38e6998e0e4cc2bd33bb37c39695bfd81eabab7 (diff)
downloadgcc-914c2e776d6d6ce6da61f4be9982390ef86c018b.zip
gcc-914c2e776d6d6ce6da61f4be9982390ef86c018b.tar.gz
gcc-914c2e776d6d6ce6da61f4be9982390ef86c018b.tar.bz2
(low_32_bit_operand): New function.
From-SVN: r9078
-rw-r--r--gcc/config/rs6000/rs6000.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 4890134..678f21f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -322,6 +322,23 @@ easy_fp_constant (op, mode)
|| (low != 0 && input_operand (low, word_mode)));
}
+/* Return 1 if the operand is a constant whose low-order 32 bits are
+ zero. */
+
+int
+low_32_bit_operand (op, mode)
+ register rtx op;
+ enum machine_mode mode;
+{
+ rtx low;
+
+ if (GET_CODE (op) != CONST_DOUBLE && GET_CODE (op) != CONST_INT)
+ return 0;
+
+ low = operand_subword (op, 1, 0, mode);
+ return low != 0 && GET_CODE (low) == CONST_INT && INTVAL (low) == 0;
+}
+
/* Return 1 if the operand is either a floating-point register, a pseudo
register, or memory. */