Ping.

Thanks,
Kyrill
On 19/08/15 13:50, Kyrill Tkachov wrote:
Ping.
https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00448.html

Thanks,
Kyrill

-----Original Message-----
From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
ow...@gcc.gnu.org] On Behalf Of Kyrill Tkachov
Sent: 10 August 2015 12:14
To: GCC Patches
Cc: Ramana Radhakrishnan; Richard Earnshaw; Marcus Shawcroft; James
Greenhalgh
Subject: Re: [PATCH][ARM][3/3] Expand mod by power of 2

Here is a slight respin.
The important parts are the same, just the expander now uses the slightly
shorter arm_gen_compare_reg and the rtx costs hunk is moved under an
explicit case MOD.

Note, the tests still require patch 1/3 that does this for aarch64 that I hope 
to
post a respinned version of soon.

Ok after the prerequisite goes in?

Thanks,
Kyrill


2015-08-10  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

      * config/arm/arm.md (*subsi3_compare0): Rename to...
      (subsi3_compare0): ... This.
      (*arm_andsi3_insn): Rename to...
      (arm_andsi3_insn): ... This.
      (modsi3): New define_expand.
      * config/arm/arm.c (arm_new_rtx_costs, MOD case): Handle case
      when operand is power of 2.


2015-08-10  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

      * gcc.target/aarch64/mod_2.x: New file.
      * gcc.target/aarch64/mod_256.x: Likewise.
      * gcc.target/arm/mod_2.c: New test.
      * gcc.target/arm/mod_256.c: Likewise.
      * gcc.target/aarch64/mod_2.c: Likewise.
      * gcc.target/aarch64/mod_256.c: Likewise.



On 31/07/15 09:20, Kyrill Tkachov wrote:
Ping.

https://gcc.gnu.org/ml/gcc-patches/2015-07/msg02037.html
Thanks,
Kyrill

On 24/07/15 11:55, Kyrill Tkachov wrote:
Hi all,

This third patch implements the same algorithm as patch 1/3 but for arm.
That is, for X % N where N is a power of 2 we do:

     rsbs    r1, r0, #0
     and     r0, r0, #(N - 1)
     and     r1, r1, #(N - 1)
     rsbpl   r0, r1, #0

For the special case where N is 2 we do the shorter:
      cmp     r0, #0
      and     r0, r0, #1
      rsblt   r0, r0, #0

Note that for the final conditional negate we expand to an
IF_THEN_ELSE of a NEG rather than a cond_exec rtx because the lra
dataflow analysis doesn't always deal with cond_execs correctly. The
splitters fixed in patch 2/3 then break it into a cond_exec after reload, so
it all works out.
Bootstrapped and tested on arm, with both ARM and Thumb2 states.

Tests are added and shared with aarch64.

Ok for trunk?

Thanks,
Kyrill

2015-07-24  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * config/arm/arm.md (*subsi3_compare0): Rename to...
        (subsi3_compare0): ... This.
        (*arm_andsi3_insn): Rename to...
        (arm_andsi3_insn): ... This.
        (modsi3): New define_expand.
        * config/arm/arm.c (arm_new_rtx_costs, MOD case): Handle case
        operand is power of 2.


2015-07-24  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * gcc.target/aarch64/mod_2.x: New file.
        * gcc.target/aarch64/mod_256.x: Likewise.
        * gcc.target/arm/mod_2.c: New test.
        * gcc.target/arm/mod_256.c: Likewise.
        * gcc.target/aarch64/mod_2.c: Likewise.
        * gcc.target/aarch64/mod_256.c: Likewise.



Reply via email to