aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-02-06 01:47:49 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-02-06 01:47:49 -0800
commitd9f0b9607d1d0d0887438e439d6838f56cf2790e (patch)
tree16c998c20bc3dd4cbe8a3f447899a131a90aad57 /gcc
parent5fbdde427d0063ff132fcca95b96e138e00a49a6 (diff)
downloadgcc-d9f0b9607d1d0d0887438e439d6838f56cf2790e.zip
gcc-d9f0b9607d1d0d0887438e439d6838f56cf2790e.tar.gz
gcc-d9f0b9607d1d0d0887438e439d6838f56cf2790e.tar.bz2
i386.md (widening and peepholes): Mask the constant instead of using gen_lowpart.
* i386.md (widening and peepholes): Mask the constant instead of using gen_lowpart. From-SVN: r31822
Diffstat (limited to 'gcc')
-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 e0894f9..4e79f5f 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 dc63bb18..4c36024 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" "")