Commit 2b7794ad by Jim Wilson

(ashlsi3): Use shlo instead of shli.

From-SVN: r4577
parent 4055b808
......@@ -2092,12 +2092,20 @@
;; Arithmetic shift instructions.
;; The shli instruction generates an overflow fault if the sign changes.
;; In the case of overflow, it does not give the natural result, it instead
;; gives the last shift value before the overflow. We can not use this
;; instruction because gcc thinks that arithmetic left shift and logical
;; left shift are identical, and sometimes canonicalizes the logical left
;; shift to an arithmetic left shift. Therefore we must always use the
;; logical left shift instruction.
(define_insn "ashlsi3"
[(set (match_operand:SI 0 "register_operand" "=d")
(ashift:SI (match_operand:SI 1 "arith_operand" "dI")
(match_operand:SI 2 "arith_operand" "dI")))]
""
"shli %2,%1,%0"
"shlo %2,%1,%0"
[(set_attr "type" "alu2")])
(define_insn "ashrsi3"
......
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