diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1993-03-01 07:29:39 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1993-03-01 07:29:39 -0500 |
commit | 5e2a751adc022f8afeffcb22182d79ff6e1d1cc2 (patch) | |
tree | b274a5cd42bcde7747207b382abebd124d42a5bd | |
parent | 26915fa9bcd03bec9a39835b075a605309e1e9d6 (diff) | |
download | gcc-5e2a751adc022f8afeffcb22182d79ff6e1d1cc2.zip gcc-5e2a751adc022f8afeffcb22182d79ff6e1d1cc2.tar.gz gcc-5e2a751adc022f8afeffcb22182d79ff6e1d1cc2.tar.bz2 |
Add three special-cases of CMP insns against zero.
From-SVN: r3573
-rw-r--r-- | gcc/config/alpha/alpha.md | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 849f404..a9c2586 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -1128,6 +1128,33 @@ "cmp%C1 %r2,%3,%0" [(set_attr "type" "icmp")]) +;; There are three important special-case that don't fit the above pattern +;; but which we want to handle here. + +(define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") + (ne:DI (match_operand:DI 1 "register_operand" "r") + (const_int 0)))] + "" + "cmpult $31,%1,%0" + [(set_attr "type" "icmp")]) + +(define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") + (gt:DI (match_operand:DI 1 "register_operand" "r") + (const_int 0)))] + "" + "cmplt $31,%1,%0" + [(set_attr "type" "icmp")]) + +(define_insn "" + [(set (match_operand:DI 0 "register_operand" "=r") + (ge:DI (match_operand:DI 1 "register_operand" "r") + (const_int 0)))] + "" + "cmple $31,%1,%0" + [(set_attr "type" "icmp")]) + (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r,r") (if_then_else:DI |