Commit 9f8e169e by Richard Henderson Committed by Richard Henderson

combine.c (simplify_comparison): Shift a NOT out of a single bit test.

        * combine.c (simplify_comparison): Shift a NOT out of a single
        bit test.

From-SVN: r36508
parent 1f3f36d1
2000-09-18 Richard Henderson <rth@cygnus.com>
* combine.c (simplify_comparison): Shift a NOT out of a single
bit test.
* combine.c (if_then_else_cond): Canonicalize BImode true to
STORE_FLAG_VALUE.
* explow.c (trunc_int_for_mode): Likewise.
......
......@@ -10811,6 +10811,21 @@ simplify_comparison (code, pop0, pop1)
continue;
}
/* Convert (ne (and (lshiftrt (not X)) 1) 0) to
(eq (and (lshiftrt X) 1) 0). */
if (const_op == 0 && equality_comparison_p
&& XEXP (op0, 1) == const1_rtx
&& GET_CODE (XEXP (op0, 0)) == LSHIFTRT
&& GET_CODE (XEXP (XEXP (op0, 0), 0)) == NOT)
{
op0 = simplify_and_const_int
(op0, mode, gen_rtx_combine (LSHIFTRT, mode,
XEXP (XEXP (XEXP (op0, 0), 0), 0),
XEXP (XEXP (op0, 0), 1)),
(HOST_WIDE_INT) 1);
code = (code == NE ? EQ : NE);
continue;
}
break;
case ASHIFT:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment