combine.c (simplify_comparison): Convert (ne (and (lshiftrt (xor X CST) Y) 1) 0) into (eq (and (lshiftrt X Y) 1) 0).
* combine.c (simplify_comparison): Convert (ne (and (lshiftrt (xor X CST) Y) 1) 0) into (eq (and (lshiftrt X Y) 1) 0). From-SVN: r71385
This commit is contained in:
parent
83a00410f5
commit
5565e8744f
|
@ -1,3 +1,9 @@
|
|||
2003-09-14 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* combine.c (simplify_comparison): Convert
|
||||
(ne (and (lshiftrt (xor X CST) Y) 1) 0) into
|
||||
(eq (and (lshiftrt X Y) 1) 0).
|
||||
|
||||
2003-09-14 Kazu Hirata <kazu@cs.umass.edu>
|
||||
|
||||
* alias.c: Follow spelling conventions.
|
||||
|
|
|
@ -10983,20 +10983,31 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
|
|||
}
|
||||
|
||||
/* Convert (ne (and (lshiftrt (not X)) 1) 0) to
|
||||
(eq (and (lshiftrt X) 1) 0). */
|
||||
(eq (and (lshiftrt X) 1) 0).
|
||||
Also handle the case where (not X) is expressed using xor. */
|
||||
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)
|
||||
&& GET_CODE (XEXP (op0, 0)) == LSHIFTRT)
|
||||
{
|
||||
rtx shift_op = XEXP (XEXP (op0, 0), 0);
|
||||
rtx shift_count = XEXP (XEXP (op0, 0), 1);
|
||||
|
||||
if (GET_CODE (shift_op) == NOT
|
||||
|| (GET_CODE (shift_op) == XOR
|
||||
&& GET_CODE (XEXP (shift_op, 1)) == CONST_INT
|
||||
&& GET_CODE (shift_count) == CONST_INT
|
||||
&& GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT
|
||||
&& (INTVAL (XEXP (shift_op, 1))
|
||||
== (HOST_WIDE_INT) 1 << INTVAL (shift_count))))
|
||||
{
|
||||
op0 = simplify_and_const_int
|
||||
(op0, mode,
|
||||
gen_rtx_LSHIFTRT (mode, XEXP (XEXP (XEXP (op0, 0), 0), 0),
|
||||
XEXP (XEXP (op0, 0), 1)),
|
||||
(NULL_RTX, mode,
|
||||
gen_rtx_LSHIFTRT (mode, XEXP (shift_op, 0), shift_count),
|
||||
(HOST_WIDE_INT) 1);
|
||||
code = (code == NE ? EQ : NE);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ASHIFT:
|
||||
|
|
Loading…
Reference in New Issue