summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-16 17:21:50 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-16 17:21:50 +0000
commit2c27ce73ee2229b0871c4ccad2342d8a4be85eff (patch)
treea0c14d55f187079455dfe88645fbdf201f9b28e3
parent3774eb730fbb98334c552a740db966c258dbba11 (diff)
downloadppe42-gcc-2c27ce73ee2229b0871c4ccad2342d8a4be85eff.tar.gz
ppe42-gcc-2c27ce73ee2229b0871c4ccad2342d8a4be85eff.zip
* sh.h (EXTRA_CONSTRAINT_Z): New macro.
(EXTRA_CONSTRAINT): Use it. * sh.md (anddi3): Use 'Z' constraint for alternative 2. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60173 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sh/sh.h6
-rw-r--r--gcc/config/sh/sh.md2
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 71233fb1081..7d05e4e7bf7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Mon Dec 16 17:20:04 2002 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * sh.h (EXTRA_CONSTRAINT_Z): New macro.
+ (EXTRA_CONSTRAINT): Use it.
+ * sh.md (anddi3): Use 'Z' constraint for alternative 2.
+
2002-12-13 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.c (output_millicode_call): Correct typo.
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 57ebbb311af..6e3b91a76e4 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -2321,12 +2321,18 @@ while (0)
? sh_const_vec ((OP), VOIDmode) \
: sh_1el_vec ((OP), VOIDmode))))
+#define EXTRA_CONSTRAINT_Z(OP) \
+ (GET_CODE (OP) == CONST_INT \
+ && (INTVAL (OP) == (unsigned) 0xffffffff \
+ || INTVAL (OP) == (HOST_WIDE_INT) -1 << 32))
+
#define EXTRA_CONSTRAINT(OP, C) \
((C) == 'Q' ? EXTRA_CONSTRAINT_Q (OP) \
: (C) == 'S' ? EXTRA_CONSTRAINT_S (OP) \
: (C) == 'T' ? EXTRA_CONSTRAINT_T (OP) \
: (C) == 'U' ? EXTRA_CONSTRAINT_U (OP) \
: (C) == 'W' ? EXTRA_CONSTRAINT_W (OP) \
+ : (C) == 'Z' ? EXTRA_CONSTRAINT_Z (OP) \
: 0)
/* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 4dbda27e4b9..e3f4ea01d35 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1970,7 +1970,7 @@
(define_insn_and_split "anddi3"
[(set (match_operand:DI 0 "arith_reg_operand" "=r,r,r")
(and:DI (match_operand:DI 1 "arith_reg_operand" "%r,r,r")
- (match_operand:DI 2 "and_operand" "r,P,n")))]
+ (match_operand:DI 2 "and_operand" "r,P,Z")))]
"TARGET_SHMEDIA"
"@
and %1, %2, %0
OpenPOWER on IntegriCloud