From d9f0b9607d1d0d0887438e439d6838f56cf2790e Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 6 Feb 2000 01:47:49 -0800 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/config/i386/i386.md | 16 +++++++++------- 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 + + * 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 * 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" "") -- 2.30.2