From: Kazu Hirata Date: Thu, 3 Apr 2003 11:59:42 +0000 (+0000) Subject: h8300.md (a peephole2): Generalize to accept GT and LE. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=203dcb741cbd8542593607b34f68ce6b6dba83c3;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f0d83fe42b..c9ba702a635 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-04-03 Kazu Hirata + + * config/h8300/h8300.md (a peephole2): Generalize to accept GT + and LE. + (another peephole2): Likewise. + 2003-04-03 Nick Clifton * config/sparc/sol2-bi.h (ASM_CPU64_DEFAULT_SPEC): Add -TSO. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 190980f6494..b27a07796a0 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -4057,7 +4057,7 @@ (compare (match_operand:HI 0 "register_operand" "") (const_int 255))) (set (pc) - (if_then_else (match_operator 1 "gtuleu_operator" + (if_then_else (match_operator 1 "gtle_operator" [(cc0) (const_int 0)]) (label_ref (match_operand 2 "" "")) (pc)))] @@ -4066,12 +4066,21 @@ (and:HI (match_dup 0) (const_int -256))) (set (pc) - (if_then_else (match_dup 4) + (if_then_else (match_dup 3) (label_ref (match_dup 2)) (pc)))] - "operands[4] = ((GET_CODE (operands[1]) == GTU) ? - gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx) : - gen_rtx_EQ (VOIDmode, cc0_rtx, const0_rtx));") + "switch (GET_CODE (operands[1])) + { + 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 ;; the equivalent with shorter sequences. Here is the summary. Cases @@ -4367,7 +4376,7 @@ (compare (match_operand:SI 0 "register_operand" "") (const_int 65535))) (set (pc) - (if_then_else (match_operator 1 "gtuleu_operator" + (if_then_else (match_operator 1 "gtle_operator" [(cc0) (const_int 0)]) (label_ref (match_operand 2 "" "")) (pc)))] @@ -4376,12 +4385,21 @@ (and:SI (match_dup 0) (const_int -65536))) (set (pc) - (if_then_else (match_dup 4) + (if_then_else (match_dup 3) (label_ref (match_dup 2)) (pc)))] - "operands[4] = ((GET_CODE (operands[1]) == GTU) ? - gen_rtx_NE (VOIDmode, cc0_rtx, const0_rtx) : - gen_rtx_EQ (VOIDmode, cc0_rtx, const0_rtx));") + "switch (GET_CODE (operands[1])) + { + 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 ;; of the register being tested, do the subtraction on the copy, and