On Thu, Oct 23, 2025 at 2:37 PM Robin Dapp <[email protected]> wrote:
>
> > It can be just use vfmv.v.f / vmv.v.x
> >
> >>    /* Same for float, just that we can always handle 64-bit doubles
> >>       even on !TARGET_64BIT.  We have ruled out 16-bit HF already
> >>       above.  */
> >> @@ -6220,6 +6224,10 @@ strided_broadcast_p (rtx op)
> >>    if (!TARGET_ZVFH && mode == HFmode)
> >>      return true;
> >>
> >> +  /* We don't have a vfmv.bf16.v.f.  */
> >> +  if (mode == BFmode)
> >> +    return true;
> >> +
> >
> > and vfmv.v.f/vmv.v.x here
>
> Hmm, right, you mean punning with HImode again?  Yeah, that would work and we
> could get rid of the strided fallback for that case.  I'll do that in v2.

It can be just put within BFmode should be fine, I mean
load/store/move/insert/extract could just use normal vector
instruction with SEW=16,
Only tha casting from/to other data types need real BF16 instruction.
('real' might not be the right term to describe, but I guess you
should be able to get my point here :P)

no casting to/from HImode, so that we can use the same pattern/logic
between w/ and w/o vector BF16 extension.

And I think we won't ever have vfmv.bf16.v.f / vfmv.bf16.f.v since
they just play the exact same operation as  vfmv.v.f / vfmv.f.v with
SEW=16.

>
>
> --
> Regards
>  Robin
>

Reply via email to