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.