aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>1999-12-28 10:33:11 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>1999-12-28 10:33:11 +0100
commitce1531ab62c5c12035ff1d96e8f18e34a8553942 (patch)
treec53b9d3cc4fa748dbc4ebb2b32cd818eead7f057 /gcc
parent6ffaeb140000c5b7a24f441b588065efd56910fd (diff)
downloadgcc-ce1531ab62c5c12035ff1d96e8f18e34a8553942.zip
gcc-ce1531ab62c5c12035ff1d96e8f18e34a8553942.tar.gz
gcc-ce1531ab62c5c12035ff1d96e8f18e34a8553942.tar.bz2
sparc.md (cmp_zero_qi, [...]): New patterns.
* config/sparc/sparc.md (cmp_zero_qi, cmp_zero_extendqisi2_andcc_set, cmp_zero_qi_sp64, cmp_zero_extendqidi2_andcc_set): New patterns. From-SVN: r31108
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sparc/sparc.md42
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 06a4a57..c899c7e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+1999-12-27 Jakub Jelinek <jakub@redhat.com>
+
+ * config/sparc/sparc.md (cmp_zero_qi,
+ cmp_zero_extendqisi2_andcc_set, cmp_zero_qi_sp64,
+ cmp_zero_extendqidi2_andcc_set): New patterns.
+
1999-12-28 Manfred Hollstein <mhollstein@cygnus.com>
* m68k/t-mot3300-gald (CROSS_LIBGCC1): Define to libgcc1-asm.a.
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 87243eb..f09d083 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -4489,6 +4489,15 @@
[(set_attr "type" "compare")
(set_attr "length" "1")])
+(define_insn "*cmp_zero_qi"
+ [(set (reg:CC 100)
+ (compare:CC (match_operand:QI 0 "register_operand" "r")
+ (const_int 0)))]
+ "! TARGET_LIVE_G0"
+ "andcc\\t%0, 0xff, %%g0"
+ [(set_attr "type" "compare")
+ (set_attr "length" "1")])
+
(define_insn "*cmp_zero_extendqisi2_set"
[(set (reg:CC 100)
(compare:CC (zero_extend:SI (match_operand:QI 1 "register_operand" "r"))
@@ -4500,6 +4509,18 @@
[(set_attr "type" "compare")
(set_attr "length" "1")])
+(define_insn "*cmp_zero_extendqisi2_andcc_set"
+ [(set (reg:CC 100)
+ (compare:CC (and:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 255))
+ (const_int 0)))
+ (set (match_operand:SI 0 "register_operand" "=r")
+ (zero_extend:SI (subreg:QI (match_dup 1) 0)))]
+ ""
+ "andcc\\t%1, 0xff, %0"
+ [(set_attr "type" "compare")
+ (set_attr "length" "1")])
+
(define_insn "*cmp_zero_extendqidi2"
[(set (reg:CCX 100)
(compare:CCX (zero_extend:DI (match_operand:QI 0 "register_operand" "r"))
@@ -4509,6 +4530,15 @@
[(set_attr "type" "compare")
(set_attr "length" "1")])
+(define_insn "*cmp_zero_qi_sp64"
+ [(set (reg:CCX 100)
+ (compare:CCX (match_operand:QI 0 "register_operand" "r")
+ (const_int 0)))]
+ "TARGET_ARCH64"
+ "andcc\\t%0, 0xff, %%g0"
+ [(set_attr "type" "compare")
+ (set_attr "length" "1")])
+
(define_insn "*cmp_zero_extendqidi2_set"
[(set (reg:CCX 100)
(compare:CCX (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))
@@ -4520,6 +4550,18 @@
[(set_attr "type" "compare")
(set_attr "length" "1")])
+(define_insn "*cmp_zero_extendqidi2_andcc_set"
+ [(set (reg:CCX 100)
+ (compare:CCX (and:DI (match_operand:DI 1 "register_operand" "r")
+ (const_int 255))
+ (const_int 0)))
+ (set (match_operand:DI 0 "register_operand" "=r")
+ (zero_extend:DI (subreg:QI (match_dup 1) 0)))]
+ "TARGET_ARCH64"
+ "andcc\\t%1, 0xff, %0"
+ [(set_attr "type" "compare")
+ (set_attr "length" "1")])
+
;; Similarly, handle {SI,DI}->QI mode truncation followed by a compare.
(define_insn "*cmp_siqi_trunc"