aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gnu.org>1993-03-10 16:57:05 +0000
committerTorbjorn Granlund <tege@gnu.org>1993-03-10 16:57:05 +0000
commit5329e2276aeb65fc8b6e8b1ddc7c99ba0a12064b (patch)
treea0bb425583d5998fac67f611dd8e35912eb32d8f /gcc
parent7887873043af19be5945e3af18aca85e9e3d476b (diff)
downloadgcc-5329e2276aeb65fc8b6e8b1ddc7c99ba0a12064b.zip
gcc-5329e2276aeb65fc8b6e8b1ddc7c99ba0a12064b.tar.gz
gcc-5329e2276aeb65fc8b6e8b1ddc7c99ba0a12064b.tar.bz2
(reg_or_cint_move_operand): New function.
(move_operand): Add header comment. From-SVN: r3693
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 4520520..a42a87e 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -156,6 +156,8 @@ reg_or_0_or_nonsymb_mem_operand (op, mode)
return 0;
}
+/* Accept anything that can be moved in one instruction into a general
+ register. */
int
move_operand (op, mode)
rtx op;
@@ -185,6 +187,25 @@ move_operand (op, mode)
return memory_address_p (mode, op);
}
+/* Accept REG and any CONST_INT that can be moved in one instruction into a
+ general register. */
+int
+reg_or_cint_move_operand (op, mode)
+ rtx op;
+ enum machine_mode mode;
+{
+ if (register_operand (op, mode))
+ return 1;
+
+ if (GET_CODE (op) == CONST_INT)
+ {
+ /* OK if ldo, ldil, or zdepi, can be used. */
+ return (INT_14_BITS (op) || (INTVAL (op) & 0x7ff) == 0
+ || zdepi_cint_p (INTVAL (op)));
+ }
+ return 0;
+}
+
int
pic_operand (op, mode)
rtx op;