Hi!

On Mon, Mar 28, 2022 at 12:27:05PM -0400, Michael Meissner wrote:
> In looking at PR target/99293, I noticed that the code in the insn
> vsx_splat_<mode>_reg used "vecmove" as the "type" insn attribute when the
> "mtvsrdd" is generated.  It should use "mfvsr".  I also added a "p9v" isa
> attribute for that alternative.

s/mfvsr/mtvsr/

But, mtvsrd and mtvsrdd have very different scheduling properties (like,
on p10 it is 1 cycle vs. 3 cycles).

Also, there are two insn patterns for mtvsrdd, and you are only touching
one here.

>       * config/rs6000/rs6000.md (vsx_splat_<mode>_reg): Use the correct
>       insn type attribute.  Add "p9v" isa attribute for generating the
>       mtvsrdd instruction.

This is in vsx.md, instead.

> --- a/gcc/config/rs6000/vsx.md
> +++ b/gcc/config/rs6000/vsx.md
> @@ -4580,7 +4580,8 @@ (define_insn "vsx_splat_<mode>_reg"
>    "@
>     xxpermdi %x0,%x1,%x1,0
>     mtvsrdd %x0,%1,%1"
> -  [(set_attr "type" "vecperm,vecmove")])
> +  [(set_attr "type" "vecperm,mtvsr")
> +   (set_attr "isa" "*,p9v")])

"we" requires "p9v".  Please do a full conversion when getting rid of
this?  That includes requiring TARGET_POWERPC64 for it (not -m64 as its
documentation says; the existing implementation of "we" is correct).


Segher

Reply via email to