From 7fa7821f2b30a56ba6fe51432aab68768074f687 Mon Sep 17 00:00:00 2001 From: kazu Date: Sat, 1 Mar 2003 19:37:35 +0000 Subject: [PATCH] * config/h8300/h8300.md (a peephole2): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63616 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/h8300/h8300.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3d536680147..fdd350db142 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-03-01 Kazu Hirata + + * config/h8300/h8300.md (a peephole2): New. + 2003-03-01 Richard Earnshaw * predict.c (estimate_bb_frequencies): Correctly set diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 084d5abbee1..f97e934bd6c 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -3556,6 +3556,11 @@ ;; dead 1 eq/ne dec.l ;; dead 2 eq/ne dec.l ;; +;; dead -131072 eq/ne inc.w and test +;; dead -65536 eq/ne inc.w and test +;; dead 65536 eq/ne inc.w and test +;; dead 131072 eq/ne inc.w and test +;; ;; dead 0x000000?? except 1 and 2 eq/ne xor.b and test ;; dead 0x0000??00 eq/ne xor.b and test ;; dead 0x0000ffff eq/ne not.w and test @@ -3626,6 +3631,32 @@ (pc)))] "operands[4] = GEN_INT (- INTVAL (operands[1]));") +(define_peephole2 + [(set (cc0) + (compare (match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "const_int_operand" ""))) + (set (pc) + (if_then_else (match_operator 3 "eqne_operator" + [(cc0) (const_int 0)]) + (label_ref (match_operand 2 "" "")) + (pc)))] + "(TARGET_H8300H || TARGET_H8300S) + && peep2_reg_dead_p (1, operands[0]) + && (INTVAL (operands[1]) == -131072 + || INTVAL (operands[1]) == -65536 + || INTVAL (operands[1]) == 65536 + || INTVAL (operands[1]) == 131072)" + [(set (match_dup 0) + (plus:SI (match_dup 0) + (match_dup 4))) + (set (cc0) + (match_dup 0)) + (set (pc) + (if_then_else (match_op_dup 3 [(cc0) (const_int 0)]) + (label_ref (match_dup 2)) + (pc)))] + "operands[4] = GEN_INT (- INTVAL (operands[1]));") + ;; For certain (in)equaltity comparisions against a constant, we can ;; XOR the register with the constant, and test the register against ;; 0. -- 2.11.0