Hi!

On Wed, Sep 09, 2020 at 04:14:37PM -0500, Pat Haugen wrote:
> I noticed that some of the VSR<->GPR move instructions are not typed
> correctly. This patch fixes those instructions so that the scheduler
> treats them with the correct latency.

> --- a/gcc/config/rs6000/rs6000.md
> +++ b/gcc/config/rs6000/rs6000.md
> @@ -5483,7 +5483,7 @@ (define_insn "lfiwzx"
>     lxsiwzx %x0,%y1
>     mtvsrwz %x0,%1
>     xxextractuw %x0,%x1,4"
> -  [(set_attr "type" "fpload,fpload,mftgpr,vecexts")
> +  [(set_attr "type" "fpload,fpload,mffgpr,vecexts")
>     (set_attr "isa" "*,p8v,p8v,p9v")])

Can we rename mftgpr/mffgpr globally?  Maybe even as mfvsr and mtvsr,
because that is what is actually modeled here?  Such names will make it
much harder to get confused and use the wrong type, too :-)

> diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
> index 54da54c43dc..3a5cf896da8 100644
> --- a/gcc/config/rs6000/vsx.md
> +++ b/gcc/config/rs6000/vsx.md
> @@ -2885,7 +2885,7 @@ (define_insn "vsx_concat_<mode>"
>    else
>      gcc_unreachable ();
>  }
> -  [(set_attr "type" "vecperm")])
> +  [(set_attr "type" "vecperm,vecmove")])

mtvsrdd is a mtvsr, sorry, mffgpr just the same?  It isn't vecmove?

> @@ -4440,7 +4440,7 @@ (define_insn "vsx_splat_<mode>_reg"
>    "@
>     xxpermdi %x0,%x1,%x1,0
>     mtvsrdd %x0,%1,%1"
> -  [(set_attr "type" "vecperm")])
> +  [(set_attr "type" "vecperm,vecmove")])

Same here.


Segher

Reply via email to