Ping.
https://gcc.gnu.org/ml/gcc-patches/2016-05/msg02078.html

Patches 1 and 3 have been approved.
Thanks,
Kyrill

On 26/05/16 10:52, Kyrill Tkachov wrote:
Hi all,

On arm we don't have a dedicated instruction that corresponds to a CTZ rtx but 
we synthesise it
with an RBIT instruction followed by a CLZ. This is currently done at expand 
time.
However, I'd like to push that step until after reload and keep the CTZ rtx as 
a single whole in
the early RTL optimisers.  This better expresses the semantics of the operation 
as a whole, since
the RBIT operation is represented as an UNSPEC anyway and so will not see the 
benefits of combine,
and a CTZ-specific optimisation that is implemented in patch 3/3 of this series 
won't be triggered
if the expression is broken up into an UNSPEC and a CLZ.

Therefore this patch changes the expander to expand to a CTZ rtx and split it 
after reload into
an RBIT + CLZ to allow sched2 to schedule them apart if it deems necessary.
This patch enables the optimisation in patch 3/3 where the appropriate test is 
added.

Bootstrapped and tested on arm-none-linux-gnueabihf.

Ok for trunk?

Thanks,
Kyrill

2016-05-26  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

    PR middle-end/37780
    * config/arm/arm.md (ctzsi2): Convert to define_insn_and_split.

Reply via email to