[FFmpeg-devel] [PATCH 3/3] riscv: add float vector-scalar multiplication

Rémi Denis-Courmont remi at remlab.net
Sat Sep 3 23:01:23 EEST 2022


Le lauantaina 3. syyskuuta 2022, 22.48.45 EEST Lynne a écrit :
> Sep 3, 2022, 21:34 by remi at remlab.net:
> > Le lauantaina 3. syyskuuta 2022, 22.11.26 EEST Lynne a écrit :
> >> > diff --git a/libavutil/riscv/float_dsp_rvv.S
> >> > b/libavutil/riscv/float_dsp_rvv.S new file mode 100644
> >> > index 0000000000..54ea1d9d6d
> >> > --- /dev/null
> >> > +++ b/libavutil/riscv/float_dsp_rvv.S
> >> > @@ -0,0 +1,60 @@
> >> > +/*
> >> > + * This file is part of FFmpeg.
> >> > + *
> >> > + * FFmpeg is free software; you can redistribute it and/or
> >> > + * modify it under the terms of the GNU Lesser General Public
> >> > + * License as published by the Free Software Foundation; either
> >> > + * version 2.1 of the License, or (at your option) any later version.
> >> > + *
> >> > + * FFmpeg is distributed in the hope that it will be useful,
> >> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> >> > + * Lesser General Public License for more details.
> >> > + *
> >> > + * You should have received a copy of the GNU Lesser General Public
> >> > + * License along with FFmpeg; if not, write to the Free Software
> >> > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> >> > 02110-1301 USA + */
> >> > +
> >> > +#include "config.h"
> >> > +#include "asm.h"
> >> > +
> >> > +        .option  arch, +v
> >> > +
> >> > +func ff_vector_fmul_scalar_rvv
> >> > +#if !defined (__riscv_float_abi_soft)
> >> > +        srli     a2, a2, 2
> >> > +#else
> >> > +        fmv.w.x  fa0, a2
> >> > +        srli     a2, a3, 2
> >> > +#endif
> >> 
> >> Can't this be handled by a macro, like it's done by arm64 and x86?
> > 
> > Err, from a quick glance, the float DSP code for AArch64 just assumes a
> > hardware floating ABI, and has no conditionals, so I'm not sure what you
> > mean by that. Do you mean something like VFP/NOVFP on AArch32?
> 
> I meant all ABI stuff to be handled by macros, either `func` or the
> instructions themselves.

I don't think that's possible here, at least not with reasonably low 
complexity. AArch32 has the same challenge and the func/endfunc macros don't 
handle it.

-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/





More information about the ffmpeg-devel mailing list