Commit 3d520aaf by David Edelsohn Committed by David Edelsohn

re PR middle-end/16795 (PowerPC - Divide sequences by negative power of two…

re PR middle-end/16795 (PowerPC - Divide sequences by negative power of two could be more efficient)

        PR target/16795
        * expmed.c (expand_divmod): If cheap power of 2 divide is
        available, use it for negative constant as well.

From-SVN: r87403
parent c92d8761
2004-09-12 David Edelsohn <edelsohn@gnu.org>
PR target/16795
* expmed.c (expand_divmod): If cheap power of 2 divide is
available, use it for negative constant as well.
2004-09-12 Andrew Pinski <apinski@apple.com> 2004-09-12 Andrew Pinski <apinski@apple.com>
* darwin.h (ASM_OUTPUT_COMMON): Make sure we do not have a * darwin.h (ASM_OUTPUT_COMMON): Make sure we do not have a
......
...@@ -3764,7 +3764,19 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode, ...@@ -3764,7 +3764,19 @@ expand_divmod (int rem_flag, enum tree_code code, enum machine_mode mode,
if (remainder) if (remainder)
return gen_lowpart (mode, remainder); return gen_lowpart (mode, remainder);
} }
quotient = expand_sdiv_pow2 (compute_mode, op0, abs_d);
if (sdiv_pow2_cheap[compute_mode]
&& ((sdiv_optab->handlers[compute_mode].insn_code
!= CODE_FOR_nothing)
|| (sdivmod_optab->handlers[compute_mode].insn_code
!= CODE_FOR_nothing)))
quotient = expand_divmod (0, TRUNC_DIV_EXPR,
compute_mode, op0,
gen_int_mode (abs_d,
compute_mode),
NULL_RTX, 0);
else
quotient = expand_sdiv_pow2 (compute_mode, op0, abs_d);
/* We have computed OP0 / abs(OP1). If OP1 is negative, /* We have computed OP0 / abs(OP1). If OP1 is negative,
negate the quotient. */ negate the quotient. */
......
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