diff options
author | Nick Clifton <nickc@redhat.com> | 2011-02-03 11:38:35 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 2011-02-03 11:38:35 +0000 |
commit | 6479ed4b0718c1032a5b4ff926897a63cb935c14 (patch) | |
tree | 1491923fd5e9f8d9ef2190f4b9931291ba830428 | |
parent | 65450d64b7ea2c26eb03dd0557703440c24a112a (diff) | |
download | gcc-6479ed4b0718c1032a5b4ff926897a63cb935c14.zip gcc-6479ed4b0718c1032a5b4ff926897a63cb935c14.tar.gz gcc-6479ed4b0718c1032a5b4ff926897a63cb935c14.tar.bz2 |
predicates.md (rx_zs_comparison_operator): Remove lt and ge.
* config/rx/predicates.md (rx_zs_comparison_operator): Remove
lt and ge.
* config/rx/rx.md (abssi2_flags): Use CC_ZSmode rather than
CC_ZSOmode.
* config/rx/rx.c (rx_print_operand): Use "lt" and "ge" suffixes
instead of "n" and "pz".
(flags_from_code): LT and GE tests need CC_FLAG_O as well as
CC_FLAG_S.
From-SVN: r169787
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/rx/predicates.md | 2 | ||||
-rw-r--r-- | gcc/config/rx/rx.c | 6 | ||||
-rw-r--r-- | gcc/config/rx/rx.md | 5 |
4 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1588c6f..f525643 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2011-02-03 Nick Clifton <nickc@redhat.com> + + * config/rx/predicates.md (rx_zs_comparison_operator): Remove + lt and ge. + * config/rx/rx.md (abssi2_flags): Use CC_ZSmode rather than + CC_ZSOmode. + * config/rx/rx.c (rx_print_operand): Use "lt" and "ge" suffixes + instead of "n" and "pz". + (flags_from_code): LT and GE tests need CC_FLAG_O as well as + CC_FLAG_S. + 2011-02-03 Jakub Jelinek <jakub@redhat.com> PR target/47312 diff --git a/gcc/config/rx/predicates.md b/gcc/config/rx/predicates.md index 77b3353..82cac42 100644 --- a/gcc/config/rx/predicates.md +++ b/gcc/config/rx/predicates.md @@ -284,7 +284,7 @@ ) (define_predicate "rx_zs_comparison_operator" - (match_code "eq,ne,lt,ge") + (match_code "eq,ne") ) ;; GT and LE omitted due to operand swap required. diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c index 8199106..839523f 100644 --- a/gcc/config/rx/rx.c +++ b/gcc/config/rx/rx.c @@ -450,10 +450,10 @@ rx_print_operand (FILE * file, rtx op, int letter) switch (code) { case LT: - ret = "n"; + ret = "lt"; break; case GE: - ret = "pz"; + ret = "ge"; break; case GT: ret = "gt"; @@ -2625,7 +2625,7 @@ flags_from_code (enum rtx_code code) { case LT: case GE: - return CC_FLAG_S; + return CC_FLAG_S | CC_FLAG_O; case GT: case LE: return CC_FLAG_S | CC_FLAG_O | CC_FLAG_Z; diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md index 99b46b5..7629a88 100644 --- a/gcc/config/rx/rx.md +++ b/gcc/config/rx/rx.md @@ -797,7 +797,10 @@ (set (reg CC_REG) (compare (abs:SI (match_dup 1)) (const_int 0)))] - "reload_completed && rx_match_ccmode (insn, CC_ZSOmode)" + ;; Note - although the ABS instruction does set the O bit in the processor + ;; status word, it does not do so in a way that is comparable with the CMP + ;; instruction. Hence we use CC_ZSmode rather than CC_ZSOmode. + "reload_completed && rx_match_ccmode (insn, CC_ZSmode)" "@ abs\t%0 abs\t%1, %0" |