On Wed, Jan 28, 2015 at 12:32:45PM +0000, Alan Lawrence wrote:
> Ok for stage 4?

This is a regression from 4.9, so once we iron out some nits, it should
be.

> gcc/ChangeLog:
> 
>       * config/aarch64/aarch64.md (*xor_one_cmpl<mode>3): Use FP_REGNUM_P
>       as split condition.

And a testcase, please!

> diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
> index 
> bc49fbe68a978b3ca069c6d084f542773df84bcb..d4b3f7b03ba0ab570cec5ce862e8c5f38f417ed1
>  100644
> --- a/gcc/config/aarch64/aarch64.md
> +++ b/gcc/config/aarch64/aarch64.md
> @@ -3054,7 +3054,7 @@
>                            (match_operand:GPI 2 "register_operand" "r,w"))))]
>    ""
>    "eon\\t%<w>0, %<w>1, %<w>2" ;; For GPR registers (only).

This should be:
"@
 eon\\t%<w>0, %<w>1, %<w>2
 #"

which would have forced a split.

Your patch is useful regardless, as I guess we could have ended up
needlessly splitting if we got unlucky with whatever had been left
in which_alternative.

Thanks,
James

> -  "reload_completed && (which_alternative == 1)" ;; For SIMD registers.
> +  "reload_completed && FP_REGNUM_P (REGNO (operands[0]))" ;; For SIMD 
> registers.
>    [(set (match_operand:GPI 0 "register_operand" "=w")
>          (xor:GPI (match_operand:GPI 1 "register_operand" "w")
>                   (match_operand:GPI 2 "register_operand" "w")))

Reply via email to