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
This commit is contained in:
Nick Clifton 2011-02-03 11:38:35 +00:00 committed by Nick Clifton
parent 65450d64b7
commit 6479ed4b07
4 changed files with 19 additions and 5 deletions

View File

@ -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

View File

@ -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.

View File

@ -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;

View File

@ -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"