Commit 203dcb74 by Kazu Hirata Committed by Kazu Hirata

h8300.md (a peephole2): Generalize to accept GT and LE.

	* config/h8300/h8300.md (a peephole2): Generalize to accept GT
	and LE.
	(another peephole2): Likewise.

From-SVN: r65199
parent dc00aebd
2003-04-03 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (a peephole2): Generalize to accept GT
and LE.
(another peephole2): Likewise.
2003-04-03 Nick Clifton <nickc@redhat.com> 2003-04-03 Nick Clifton <nickc@redhat.com>
* config/sparc/sol2-bi.h (ASM_CPU64_DEFAULT_SPEC): Add -TSO. * config/sparc/sol2-bi.h (ASM_CPU64_DEFAULT_SPEC): Add -TSO.
......
...@@ -4057,7 +4057,7 @@ ...@@ -4057,7 +4057,7 @@
(compare (match_operand:HI 0 "register_operand" "") (compare (match_operand:HI 0 "register_operand" "")
(const_int 255))) (const_int 255)))
(set (pc) (set (pc)
(if_then_else (match_operator 1 "gtuleu_operator" (if_then_else (match_operator 1 "gtle_operator"
[(cc0) (const_int 0)]) [(cc0) (const_int 0)])
(label_ref (match_operand 2 "" "")) (label_ref (match_operand 2 "" ""))
(pc)))] (pc)))]
...@@ -4066,12 +4066,21 @@ ...@@ -4066,12 +4066,21 @@
(and:HI (match_dup 0) (and:HI (match_dup 0)
(const_int -256))) (const_int -256)))
(set (pc) (set (pc)
(if_then_else (match_dup 4) (if_then_else (match_dup 3)
(label_ref (match_dup 2)) (label_ref (match_dup 2))
(pc)))] (pc)))]
"operands[4] = ((GET_CODE (operands[1]) == GTU) ? "switch (GET_CODE (operands[1]))
gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx) : {
gen_rtx_EQ (VOIDmode, cc0_rtx, const0_rtx));") case GTU:
operands[3] = gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx);
break;
case LEU:
operands[3] = gen_rtx_EQ (VOIDmode, cc0_rtx, const0_rtx);
break;
default:
operands[3] = operands[1];
break;
}")
;; (compare (reg:SI) (const_int)) takes 6 bytes, so we try to achieve ;; (compare (reg:SI) (const_int)) takes 6 bytes, so we try to achieve
;; the equivalent with shorter sequences. Here is the summary. Cases ;; the equivalent with shorter sequences. Here is the summary. Cases
...@@ -4367,7 +4376,7 @@ ...@@ -4367,7 +4376,7 @@
(compare (match_operand:SI 0 "register_operand" "") (compare (match_operand:SI 0 "register_operand" "")
(const_int 65535))) (const_int 65535)))
(set (pc) (set (pc)
(if_then_else (match_operator 1 "gtuleu_operator" (if_then_else (match_operator 1 "gtle_operator"
[(cc0) (const_int 0)]) [(cc0) (const_int 0)])
(label_ref (match_operand 2 "" "")) (label_ref (match_operand 2 "" ""))
(pc)))] (pc)))]
...@@ -4376,12 +4385,21 @@ ...@@ -4376,12 +4385,21 @@
(and:SI (match_dup 0) (and:SI (match_dup 0)
(const_int -65536))) (const_int -65536)))
(set (pc) (set (pc)
(if_then_else (match_dup 4) (if_then_else (match_dup 3)
(label_ref (match_dup 2)) (label_ref (match_dup 2))
(pc)))] (pc)))]
"operands[4] = ((GET_CODE (operands[1]) == GTU) ? "switch (GET_CODE (operands[1]))
gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx) : {
gen_rtx_EQ (VOIDmode, cc0_rtx, const0_rtx));") case GTU:
operands[3] = gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx);
break;
case LEU:
operands[3] = gen_rtx_EQ (VOIDmode, cc0_rtx, const0_rtx);
break;
default:
operands[3] = operands[1];
break;
}")
;; For constants like -1, -2, 1, 2, it is still cheaper to make a copy ;; For constants like -1, -2, 1, 2, it is still cheaper to make a copy
;; of the register being tested, do the subtraction on the copy, and ;; of the register being tested, do the subtraction on the copy, and
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment