summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-06 09:47:49 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-06 09:47:49 +0000
commitc435d70bcd889223aead95f8bb6cd11abeee129c (patch)
tree16c998c20bc3dd4cbe8a3f447899a131a90aad57
parent7b2d4348ac324866a7db382be2229a84c4cf70b9 (diff)
downloadppe42-gcc-c435d70bcd889223aead95f8bb6cd11abeee129c.tar.gz
ppe42-gcc-c435d70bcd889223aead95f8bb6cd11abeee129c.zip
* i386.md (widening and peepholes): Mask the constant instead of
using gen_lowpart. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31822 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.md16
2 files changed, 17 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e0894f9b28b..4e79f5f4511 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2000-02-06 Richard Henderson <rth@cygnus.com>
+
+ * i386.c (ix86_agi_dependant): Handle pro_epilogue_adjust_stack
+ as a TYPE_LEA insn.
+
+ * i386.md (widening and peepholes): Mask the constant instead of
+ using gen_lowpart.
+
2000-02-05 Zack Weinberg <zack@wolery.cumb.org>
* cppfiles.c (read_and_prescan) [case SPECCASE_QUESTION]: Bump
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index dc63bb18bb7..4c36024756a 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -8928,7 +8928,7 @@
(define_split
[(set (reg:CCNO 17)
(compare:CCNO (and (match_operand 1 "aligned_operand" "")
- (match_operand 2 "immediate_operand" ""))
+ (match_operand 2 "const_int_operand" ""))
(const_int 0)))
(set (match_operand 0 "register_operand" "")
(and (match_dup 1) (match_dup 2)))]
@@ -8941,14 +8941,15 @@
(const_int 0)))
(set (match_dup 0)
(and:SI (match_dup 1) (match_dup 2)))])]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);
- operands[2] = gen_lowpart (SImode, operands[2]);")
+ "operands[2]
+ = GEN_INT (INTVAL (operands[2]) & GET_MODE_MASK (GET_MODE (operands[0])));
+ operands[0] = gen_lowpart (SImode, operands[0]);
+ operands[1] = gen_lowpart (SImode, operands[1]);")
(define_split
[(set (reg:CCNO 17)
(compare:CCNO (and (match_operand 0 "aligned_operand" "")
- (match_operand 1 "immediate_operand" ""))
+ (match_operand 1 "const_int_operand" ""))
(const_int 0)))]
"! TARGET_PARTIAL_REG_STALL && reload_completed
&& (GET_MODE (operands[0]) == HImode
@@ -8957,8 +8958,9 @@
[(set (reg:CCNO 17)
(compare:CCNO (and:SI (match_dup 0) (match_dup 1))
(const_int 0)))]
- "operands[0] = gen_lowpart (SImode, operands[0]);
- operands[1] = gen_lowpart (SImode, operands[1]);")
+ "operands[1]
+ = GEN_INT (INTVAL (operands[1]) & GET_MODE_MASK (GET_MODE (operands[0])));
+ operands[0] = gen_lowpart (SImode, operands[0]);")
(define_split
[(set (match_operand 0 "register_operand" "")
OpenPOWER on IntegriCloud