diff options
author | Stephane Carrez <stcarrez@nerim.fr> | 2003-04-12 23:52:33 +0200 |
---|---|---|
committer | Stephane Carrez <ciceron@gcc.gnu.org> | 2003-04-12 23:52:33 +0200 |
commit | cebcfdc87f29ba2dcbcb72052999a1795df34c34 (patch) | |
tree | ac756bba7a33b86f559e069a5f577170fe03c5f9 | |
parent | 0ae32ec0d700f0e22b803b904f3849e5b5b10360 (diff) | |
download | gcc-cebcfdc87f29ba2dcbcb72052999a1795df34c34.zip gcc-cebcfdc87f29ba2dcbcb72052999a1795df34c34.tar.gz gcc-cebcfdc87f29ba2dcbcb72052999a1795df34c34.tar.bz2 |
* config/m68hc11/m68hc11-protos.h
(m68hc11_eq_compare_operator): Declare
* config/m68hc11/m68hc11.h (PREDICATE_CODES): Register new predicate.
* config/m68hc11/m68hc11.c (m68hc11_eq_compare_operator): New predicate
(d_register_operand): Check the operand mode.
(hard_addr_reg_operand): Likewise.
From-SVN: r65529
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/m68hc11/m68hc11-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/m68hc11/m68hc11.c | 14 | ||||
-rw-r--r-- | gcc/config/m68hc11/m68hc11.h | 1 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f73a65..c49afa1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2003-04-12 Stephane Carrez <stcarrez@nerim.fr> + * config/m68hc11/m68hc11-protos.h + (m68hc11_eq_compare_operator): Declare + * config/m68hc11/m68hc11.h (PREDICATE_CODES): Register new predicate. + * config/m68hc11/m68hc11.c (m68hc11_eq_compare_operator): New predicate + (d_register_operand): Check the operand mode. + (hard_addr_reg_operand): Likewise. + +2003-04-12 Stephane Carrez <stcarrez@nerim.fr> + * config/m68hc11/m68hc11.md ("decrement_and_branch_until_zero"): New pattern for dbcc/ibcc generation for 68HC12. ("doloop_end"): New pattern. diff --git a/gcc/config/m68hc11/m68hc11-protos.h b/gcc/config/m68hc11/m68hc11-protos.h index 20b5ae0..3c814d7 100644 --- a/gcc/config/m68hc11/m68hc11-protos.h +++ b/gcc/config/m68hc11/m68hc11-protos.h @@ -120,6 +120,7 @@ extern int m68hc11_arith_operator PARAMS((rtx, enum machine_mode)); extern int m68hc11_non_shift_operator PARAMS((rtx, enum machine_mode)); extern int m68hc11_shift_operator PARAMS((rtx, enum machine_mode)); extern int m68hc11_unary_operator PARAMS((rtx, enum machine_mode)); +extern int m68hc11_eq_compare_operator PARAMS((rtx, enum machine_mode)); extern int non_push_operand PARAMS((rtx, enum machine_mode)); extern int hard_reg_operand PARAMS((rtx, enum machine_mode)); extern int soft_reg_operand PARAMS((rtx, enum machine_mode)); diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c index 5c762ca..abada3c 100644 --- a/gcc/config/m68hc11/m68hc11.c +++ b/gcc/config/m68hc11/m68hc11.c @@ -1026,6 +1026,9 @@ d_register_operand (operand, mode) rtx operand; enum machine_mode mode ATTRIBUTE_UNUSED; { + if (GET_MODE (operand) != mode && mode != VOIDmode) + return 0; + if (GET_CODE (operand) == SUBREG) operand = XEXP (operand, 0); @@ -1040,6 +1043,9 @@ hard_addr_reg_operand (operand, mode) rtx operand; enum machine_mode mode ATTRIBUTE_UNUSED; { + if (GET_MODE (operand) != mode && mode != VOIDmode) + return 0; + if (GET_CODE (operand) == SUBREG) operand = XEXP (operand, 0); @@ -1132,6 +1138,14 @@ symbolic_memory_operand (op, mode) } int +m68hc11_eq_compare_operator (op, mode) + register rtx op; + enum machine_mode mode ATTRIBUTE_UNUSED; +{ + return GET_CODE (op) == EQ || GET_CODE (op) == NE; +} + +int m68hc11_logical_operator (op, mode) register rtx op; enum machine_mode mode ATTRIBUTE_UNUSED; diff --git a/gcc/config/m68hc11/m68hc11.h b/gcc/config/m68hc11/m68hc11.h index cb689cc..a29f56d 100644 --- a/gcc/config/m68hc11/m68hc11.h +++ b/gcc/config/m68hc11/m68hc11.h @@ -1665,6 +1665,7 @@ do { \ {"m68hc11_non_shift_operator", {AND, IOR, XOR, PLUS, MINUS}}, \ {"m68hc11_unary_operator", {NEG, NOT, SIGN_EXTEND, ZERO_EXTEND}}, \ {"m68hc11_shift_operator", {ASHIFT, ASHIFTRT, LSHIFTRT, ROTATE, ROTATERT}},\ +{"m68hc11_eq_compare_operator", {EQ, NE}}, \ {"non_push_operand", {SUBREG, REG, MEM}}, \ {"reg_or_some_mem_operand", {SUBREG, REG, MEM}}, \ {"tst_operand", {SUBREG, REG, MEM}}, \ |