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.