Commit b23ca156 by Alexandre Oliva Committed by Alexandre Oliva

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
parent 8c81504d
2000-08-30 Alexandre Oliva <aoliva@redhat.com>
* 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 <dave@hiauly1.hia.nrc.ca> 2000-08-30 J. David Anglin <dave@hiauly1.hia.nrc.ca>
* fixinc/gnu-regex.c: Don't define `const'. * fixinc/gnu-regex.c: Don't define `const'.
......
...@@ -558,6 +558,30 @@ ...@@ -558,6 +558,30 @@
cmp/eq %1,%0 cmp/eq %1,%0
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" (define_insn "cmpgtsi_t"
[(set (reg:SI 18) (gt:SI (match_operand:SI 0 "arith_reg_operand" "r,r") [(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")))] (match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))]
...@@ -636,11 +660,9 @@ ...@@ -636,11 +660,9 @@
(match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))] (match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))]
"reload_completed" "reload_completed"
[(set (reg:SI 18) (eq:SI (match_dup 2) (match_dup 3))) [(set (reg:SI 18) (eq:SI (match_dup 2) (match_dup 3)))
(set (pc) (if_then_else (eq (reg:SI 18) (const_int 0)) (set (reg:SI 18)
(label_ref (match_dup 6)) (and:SI (reg:SI 18)
(pc))) (eq:SI (match_dup 4) (match_dup 5))))]
(set (reg:SI 18) (eq:SI (match_dup 4) (match_dup 5)))
(match_dup 6)]
" "
{ {
operands[2] operands[2]
...@@ -654,7 +676,6 @@ ...@@ -654,7 +676,6 @@
+ (TARGET_LITTLE_ENDIAN ? 1 : 0))); + (TARGET_LITTLE_ENDIAN ? 1 : 0)));
operands[4] = gen_lowpart (SImode, operands[0]); operands[4] = gen_lowpart (SImode, operands[0]);
operands[5] = gen_lowpart (SImode, operands[1]); operands[5] = gen_lowpart (SImode, operands[1]);
operands[6] = gen_label_rtx ();
}") }")
(define_insn "cmpgtdi_t" (define_insn "cmpgtdi_t"
......
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