From: Jim Wilson Date: Tue, 28 Jun 1994 17:41:52 +0000 (-0700) Subject: (andsi3+6): Replace bad clrbit pattern with two working ones. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3c9b21309942ec8b66c000356452f4d0f2e7a610;p=gcc.git (andsi3+6): Replace bad clrbit pattern with two working ones. From-SVN: r7585 --- diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md index dd528291043..5a93cfe0455 100644 --- a/gcc/config/i960/i960.md +++ b/gcc/config/i960/i960.md @@ -1657,14 +1657,25 @@ return \"clrbit %2,%1,%0\"; }") +;; (not (ashift 1 reg)) canonicalizes to (rotate -2 reg) (define_insn "" [(set (match_operand:SI 0 "register_operand" "=d") - (and:SI (ashift:SI (const_int 1) + (and:SI (rotate:SI (const_int -2) (match_operand:SI 1 "register_operand" "d")) - (match_operand:SI 2 "arith_operand" "dI")))] + (match_operand:SI 2 "register_operand" "d")))] "" "clrbit %1,%2,%0") +;; The above pattern canonicalizes to this when both the input and output +;; are the same pseudo-register. +(define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "=d") + (const_int 1) + (match_operand:SI 1 "register_operand" "d")) + (const_int 0))] + "" + "clrbit %1,%0,%0") + (define_insn "" [(set (match_operand:SI 0 "register_operand" "=d") (xor:SI (match_operand:SI 1 "arith_operand" "dI")