On 09/03/2015 09:34 AM, Jiong Wang wrote:
As Rainer reported at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67421
Also, as described at
https://gcc.gnu.org/ml/gcc-patches/2015-08/msg01147.html
This patch relax the restriction on wide left shift. Previously we
always honor target private pattern, so when the following check be
true, we cancel the transformation.
have_insn_for (ASHIFT, mode)
While it's better to do a cost on generated instruction sequences to
decided whether it's beneficial to honor backend pattern. Normally the
generic transformation will be better.
I haven't used GEN_FCN to invoke gen_* directly, instead I reused
"expand_variable_shift" to let it handle all the left work.
wide-shift-64 pass on sparc under the option "-mv8plus -mcpu=v9" now,
and arm32 also generate better code for wide-shift-64.
OK for trunk?
2015-09-03 Jiong. Wang <jiong.w...@arm.com>
gcc/
PR rtl-optimization/67421
* expr.c (expand_expr_real_2): Cost instrcution sequences when doing
left wide shift tranformation.
OK.
Note this hopefully allows targets that define double-word shift
patterns to benefit from your changes. Please watch for additional
fall-out as your sequences are getting wider usage.
Thanks,
jeff