aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2003-12-17 21:51:57 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2003-12-17 21:51:57 +0000
commit287ff1982c1e70f66d91ad56615a8694e9c09fa9 (patch)
treea25bcc9c5488299ac0b841d7b27550483f26d5f5 /gcc
parentc856f5362741637da6fccdfc08f51a2890d5e39a (diff)
downloadgcc-287ff1982c1e70f66d91ad56615a8694e9c09fa9.zip
gcc-287ff1982c1e70f66d91ad56615a8694e9c09fa9.tar.gz
gcc-287ff1982c1e70f66d91ad56615a8694e9c09fa9.tar.bz2
re PR target/11992 (Wrong built-in code for memcmp with length 1<<24 only (1<<24)-1 possible for CLCL-Instruction)
PR target/11992 * config/s390/s390.md ("*cmpmem_long_64"): Use CLCLE instruction instead of CLCL. ("*cmpmem_long_31"): Likewise. From-SVN: r74752
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/s390/s390.md14
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fb94d1f..34aa467 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2003-12-17 Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR target/11992
+ * config/s390/s390.md ("*cmpmem_long_64"): Use CLCLE instruction
+ instead of CLCL.
+ ("*cmpmem_long_31"): Likewise.
+
2003-12-17 Vladimir Makarov <vmakarov@redhat.com>
* config/ia64/ia64.c: Add more comments about insn bundling.
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 3f6f6b3..4ebaae5 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -2080,9 +2080,10 @@
(use (match_dup 2))
(use (match_dup 3))]
"TARGET_64BIT"
- "clcl\t%0,%1"
- [(set_attr "op_type" "RR")
- (set_attr "type" "vs")])
+ "clcle\t%0,%1,0\;jo\t.-4"
+ [(set_attr "op_type" "NN")
+ (set_attr "type" "vs")
+ (set_attr "length" "8")])
(define_insn "*cmpmem_long_31"
[(clobber (match_operand:DI 0 "register_operand" "=d"))
@@ -2093,9 +2094,10 @@
(use (match_dup 2))
(use (match_dup 3))]
"!TARGET_64BIT"
- "clcl\t%0,%1"
- [(set_attr "op_type" "RR")
- (set_attr "type" "vs")])
+ "clcle\t%0,%1,0\;jo\t.-4"
+ [(set_attr "op_type" "NN")
+ (set_attr "type" "vs")
+ (set_attr "length" "8")])
; Convert condition code to integer in range (-1, 0, 1)