From b23ca15651eeb3c463e6789541d19955ed7daa5b Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Wed, 30 Aug 2000 21:49:07 +0000 Subject: [PATCH] sh.md (cmpeqsi_ior_t, [...]): New insns. * config/sh/sh.md (cmpeqsi_ior_t, cmpeqsi_and_t): New insns. (cmpeqdi_t splitter): Use cmpeqsi_and_t instead of emitting jumps and labels. From-SVN: r36072 --- gcc/ChangeLog | 6 ++++++ gcc/config/sh/sh.md | 33 +++++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 041371447dee..2fff75873c1c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-08-30 Alexandre Oliva + + * config/sh/sh.md (cmpeqsi_ior_t, cmpeqsi_and_t): New insns. + (cmpeqdi_t splitter): Use cmpeqsi_and_t instead of emitting jumps + and labels. + 2000-08-30 J. David Anglin * fixinc/gnu-regex.c: Don't define `const'. diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 051acb8e1a73..fc3068491241 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -558,6 +558,30 @@ cmp/eq %1,%0 cmp/eq %1,%0") +(define_insn "cmpeqsi_ior_t" + [(set (reg:SI 18) + (ior:SI (reg:SI 18) + (eq:SI (match_operand:SI 0 "arith_reg_operand" "r,z,r") + (match_operand:SI 1 "arith_operand" "N,rI,r"))))] + "" + "@ + bt .+4\;tst %0,%0 + bt .+4\;cmp/eq %1,%0 + bt .+4\;cmp/eq %1,%0" + [(set_attr "length" "4")]) + +(define_insn "cmpeqsi_and_t" + [(set (reg:SI 18) + (and:SI (reg:SI 18) + (eq:SI (match_operand:SI 0 "arith_reg_operand" "r,z,r") + (match_operand:SI 1 "arith_operand" "N,rI,r"))))] + "" + "@ + bf .+4\;tst %0,%0 + bf .+4\;cmp/eq %1,%0 + bf .+4\;cmp/eq %1,%0" + [(set_attr "length" "4")]) + (define_insn "cmpgtsi_t" [(set (reg:SI 18) (gt:SI (match_operand:SI 0 "arith_reg_operand" "r,r") (match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))] @@ -636,11 +660,9 @@ (match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))] "reload_completed" [(set (reg:SI 18) (eq:SI (match_dup 2) (match_dup 3))) - (set (pc) (if_then_else (eq (reg:SI 18) (const_int 0)) - (label_ref (match_dup 6)) - (pc))) - (set (reg:SI 18) (eq:SI (match_dup 4) (match_dup 5))) - (match_dup 6)] + (set (reg:SI 18) + (and:SI (reg:SI 18) + (eq:SI (match_dup 4) (match_dup 5))))] " { operands[2] @@ -654,7 +676,6 @@ + (TARGET_LITTLE_ENDIAN ? 1 : 0))); operands[4] = gen_lowpart (SImode, operands[0]); operands[5] = gen_lowpart (SImode, operands[1]); - operands[6] = gen_label_rtx (); }") (define_insn "cmpgtdi_t" -- 2.43.5