aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-03-15 11:40:34 -0800
committerJim Wilson <wilson@gcc.gnu.org>1993-03-15 11:40:34 -0800
commitd21a353d96c94d9876e4b5c2921fe29672f0c14b (patch)
treea863c735a91b64b55877ad54d9f7bc2a0ba25484 /gcc/config/sparc
parent6f0f06377eb781444f2722ef75e8830ff05af988 (diff)
downloadgcc-d21a353d96c94d9876e4b5c2921fe29672f0c14b.zip
gcc-d21a353d96c94d9876e4b5c2921fe29672f0c14b.tar.gz
gcc-d21a353d96c94d9876e4b5c2921fe29672f0c14b.tar.bz2
(zero_extendqisi2+4,+5): Add new patterns for combining a SI->QI mode truncate...
(zero_extendqisi2+4,+5): Add new patterns for combining a SI->QI mode truncate with an insn that sets the condition codes. From-SVN: r3743
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r--gcc/config/sparc/sparc.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 5f8afeb..293893d 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -1418,6 +1418,26 @@
""
"andcc %1,0xff,%0"
[(set_attr "type" "unary")])
+
+;; Similarly, handle SI->QI mode truncation followed by a compare.
+
+(define_insn ""
+ [(set (reg:CC 0)
+ (compare:CC (subreg:QI (match_operand:SI 0 "register_operand" "r") 0)
+ (const_int 0)))]
+ ""
+ "andcc %0,0xff,%%g0"
+ [(set_attr "type" "compare")])
+
+(define_insn ""
+ [(set (reg:CC 0)
+ (compare:CC (subreg:QI (match_operand:SI 1 "register_operand" "r") 0)
+ (const_int 0)))
+ (set (match_operand:QI 0 "register_operand" "=r")
+ (match_dup 1))]
+ ""
+ "andcc %1,0xff,%0"
+ [(set_attr "type" "unary")])
;;- sign extension instructions