Ping.
https://gcc.gnu.org/ml/gcc-patches/2015-07/msg02038.html

This is a prerequisite for patch 3/3 but is a useful cleanup in its own right.

Thanks,
Kyrill

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

As part of patch 3/3 I want to expand to an if_then_else form of a conditional 
negate
operation. It seems we already have patterns for that, but they are ancient and 
only enabled
for TARGET_ARM. Doing a bit of archaeology I see that they were added in 1997 
before Thumb and before
define_insn_and_split. A commit in 2000 that introduced Thumb mode restricted 
them to only TARGET_ARM.

This patch modernises the patterns by converting them to 
define_insn_and_splits, removes the redundant
alternatives that can be expressed using constraints and splits them into a 
cond_exec of a negate operation
after reload (when we're allowed to generate cond_exec rtxes).

This way, we can enable both patterns for TARGET_32BIT i.e. both ARM and Thumb2 
states.

I did two bootstraps, one in arm mode, one in Thumb2 mode.
Both were fine.
Tested on arm too.

Ok for trunk?

Thanks,
Kyrill

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

      * config/arm/arm.md (*if_neg_move): Convert to insn_and_split.
      Enable for TARGET_32BIT.
      (*if_move_neg): Likewise.

Reply via email to