On 06/12/11 17:59, Andrew Stubbs wrote:
> This patch adds a one's complement pattern for doing DImode 'not' in 
> NEON registers.
> 
> There are already patterns for doing one's complement of vectors, and 
> even though it boils down to the same instruction, the DImode case was 
> missing.
> 
> The patch needs to be a little more complicated than using a mode 
> iterator that includes DI because it needs to coexist with the non-neon 
> one_cmpldi2 (renamed by this patch to "one_cmpldi2_core").
> 
> OK for when stage 1 opens again?
> 
> Andrew
> 
> 
> neon-not.patch
> 
> 
> 2011-12-06  Andrew Stubbs  <a...@codesourcery.com>
> 
>       gcc/
>       * config/arm/arm.md (one_cmpldi2): Rename to ...
>       (one_cmpldi2_core): ... this, and modify it to prevent it being
>       used for NEON.
>       (one_cmpldi2): New define_expand.
>       * config/arm/neon.md (one_cmpldi2_neon): New define_insn.


> +(define_insn_and_split "*one_cmpldi2_core"
> +  [(set (match_operand:DI 0 "arm_general_register_operand" "=&r,&r")
> +     (not:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")))]

Thinking about it, for an operation with one input and one output, there's no 
need for the
earlyclobber marker when the input is tied to the output (there's no other 
operand that can be
clobbered).

Otherwise OK.

R.

Reply via email to