aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-10-05 21:08:07 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-10-05 21:08:07 -0700
commit13a7eb33484fb00e34f119bbd55aed313d5bd09e (patch)
tree2895000eec0a61ebb3b5f97f34af0353000ac789 /gcc/config/sparc
parent922bd191bc3f3aedad6ba95ac8aa1b88b24c744a (diff)
downloadgcc-13a7eb33484fb00e34f119bbd55aed313d5bd09e.zip
gcc-13a7eb33484fb00e34f119bbd55aed313d5bd09e.tar.gz
gcc-13a7eb33484fb00e34f119bbd55aed313d5bd09e.tar.bz2
(umulsidi3): Use uns_arith_operand not arith_operand.
(const_umulsidi3): Use uns_small_int not small_int. (ashlsi3+1, ashlsi3+2): New patterns to replace shift and compare with addcc. From-SVN: r5628
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r--gcc/config/sparc/sparc.md23
1 files changed, 21 insertions, 2 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index dcb96e9..684a435 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -1840,7 +1840,7 @@
(define_expand "umulsidi3"
[(set (match_operand:DI 0 "register_operand" "")
(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
- (zero_extend:DI (match_operand:SI 2 "arith_operand" ""))))]
+ (zero_extend:DI (match_operand:SI 2 "uns_arith_operand" ""))))]
"TARGET_V8 || TARGET_SPARCLITE"
"
{
@@ -1864,7 +1864,7 @@
(define_insn "const_umulsidi3"
[(set (match_operand:DI 0 "register_operand" "=r")
(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
- (match_operand:SI 2 "small_int" "I")))]
+ (match_operand:SI 2 "uns_small_int" "")))]
"TARGET_V8 || TARGET_SPARCLITE"
"umul %1,%2,%R0\;rd %%y,%0"
[(set_attr "length" "2")])
@@ -2529,6 +2529,25 @@
""
"sll %1,%2,%0")
+(define_insn ""
+ [(set (reg:CC_NOOV 0)
+ (compare:CC_NOOV (ashift:SI (match_operand:SI 0 "register_operand" "r")
+ (const_int 1))
+ (const_int 0)))]
+ ""
+ "addcc %0,%0,%%g0"
+ [(set_attr "type" "compare")])
+
+(define_insn ""
+ [(set (reg:CC_NOOV 0)
+ (compare:CC_NOOV (ashift:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 1))
+ (const_int 0)))
+ (set (match_operand:SI 0 "register_operand" "=r")
+ (ashift:SI (match_dup 1) (const_int 1)))]
+ ""
+ "addcc %1,%1,%0")
+
(define_insn "ashrsi3"
[(set (match_operand:SI 0 "register_operand" "=r")
(ashiftrt:SI (match_operand:SI 1 "register_operand" "r")