aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/1750a
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-09-15 21:29:37 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1995-09-15 21:29:37 +0000
commitfa40d61b7f40584d853405398906981afab20e1e (patch)
tree1948c05f5b1dce636bbdf3008ca901c258d8cad1 /gcc/config/1750a
parent470d146fa3eed7c7fdd106f5c6d1d44dedb8b98c (diff)
(b_mode_operand): New function.
(print_operand): Added code 'Q'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10360 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/1750a')
-rw-r--r--gcc/config/1750a/1750a.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/gcc/config/1750a/1750a.c b/gcc/config/1750a/1750a.c
index 5871f900281..e7a98dd3a08 100644
--- a/gcc/config/1750a/1750a.c
+++ b/gcc/config/1750a/1750a.c
@@ -291,6 +291,32 @@ small_nonneg_const (op, mode)
return 0;
}
+
+/* predicate for 1750 `B' addressing mode (Base Register with Offset)
+ memory operand */
+int
+b_mode_operand (op)
+ rtx op;
+{
+ if (GET_CODE (op) == MEM)
+ {
+ rtx inner = XEXP (op, 0);
+ if (GET_CODE (inner) == PLUS)
+ {
+ rtx plus_op0 = XEXP (inner, 0);
+ if (GET_CODE (plus_op0) == REG && REG_OK_FOR_INDEX_P (plus_op0))
+ {
+ rtx plus_op1 = XEXP (inner, 1);
+ if (GET_CODE (plus_op1) == CONST_INT
+ && INTVAL (plus_op1) >= 0
+ && INTVAL (plus_op1) <= 255)
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
/* Decide whether to output a conditional jump as a "Jump Conditional"
or as a "Branch Conditional": */
@@ -384,7 +410,12 @@ print_operand (file, x, kode)
case LABEL_REF:
case CONST:
case MEM:
- output_address (XEXP (x, 0));
+ if (kode == 'Q')
+ fprintf (file, "r%d,%d",
+ REGNO (XEXP (XEXP (x, 0), 0)),
+ INTVAL (XEXP (XEXP (x, 0), 1)));
+ else
+ output_address (XEXP (x, 0));
break;
case CONST_DOUBLE:
/* {