From d3c40837991a971dc9c72e144324dc8758d3ea38 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 4 Mar 2004 18:05:06 +0000 Subject: [PATCH] * config/h8300/h8300.md: Add comments about peephole2's. From-SVN: r78921 --- gcc/ChangeLog | 4 +++ gcc/config/h8300/h8300.md | 73 ++++++++++++++++++++++++++++++++++----- 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea801b9c7d8..13ce22dab68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-03-04 Kazu Hirata + + * config/h8300/h8300.md: Add comments about peephole2's. + 2004-03-04 Steven Bosscher * i386.h (TARGET_CPU_DEFAULT_nocona): Fix value. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 6bd51431cb2..b653cc9e1d7 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -4373,8 +4373,15 @@ ;; ;; ---- 65535 geu/ltu mov.w -;; For a small constant, it is cheaper to actually do the subtraction -;; and then test the register. +;; Transform +;; +;; cmp.l #1,er0 +;; beq .L1 +;; +;; into +;; +;; dec.l #1,er0 +;; beq .L1 (define_peephole2 [(set (cc0) @@ -4399,6 +4406,16 @@ (pc)))] "operands[4] = GEN_INT (- INTVAL (operands[1]));") +;; Transform +;; +;; cmp.l #65536,er0 +;; beq .L1 +;; +;; into +;; +;; dec.l #1,e0 +;; beq .L1 + (define_peephole2 [(set (cc0) (compare (match_operand:SI 0 "register_operand" "") @@ -4425,9 +4442,16 @@ (pc)))] "operands[4] = GEN_INT (- INTVAL (operands[1]));") -;; For certain (in)equality comparisons against a constant, we can -;; XOR the register with the constant, and test the register against -;; 0. +;; Transform +;; +;; cmp.l #100,er0 +;; beq .L1 +;; +;; into +;; +;; xor.b #100,er0 +;; mov.l er0,er0 +;; beq .L1 (define_peephole2 [(set (cc0) @@ -4456,6 +4480,17 @@ (pc)))] "") +;; Transform +;; +;; cmp.l #-100,er0 +;; beq .L1 +;; +;; into +;; +;; xor.b #99,er0 +;; not.l er0 +;; beq .L1 + (define_peephole2 [(set (cc0) (compare (match_operand:SI 0 "register_operand" "") @@ -4484,6 +4519,17 @@ (pc)))] "operands[4] = GEN_INT (INTVAL (operands[1]) ^ -1);") +;; Transform +;; +;; cmp.l #-2147483648,er0 +;; beq .L1 +;; +;; into +;; +;; rotl.l er0 +;; dec.l #1,er0 +;; beq .L1 + (define_peephole2 [(set (cc0) (compare (match_operand:SI 0 "register_operand" "") @@ -4829,10 +4875,19 @@ const0_rtx); }) -;; 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 -;; then test the copy. We avoid this transformation if we see more -;; than one copy of the same compare insn. +;; Transform +;; +;; cmp.l #1,er0 +;; beq .L1 +;; +;; into +;; +;; mov.l er0,er1 +;; dec.l #1,er1 +;; beq .L1 + +;; We avoid this transformation if we see more than one copy of the +;; same compare insn. (define_peephole2 [(match_scratch:SI 4 "r")