diff options
author | Rémi Denis-Courmont <remi@remlab.net> | 2024-07-25 22:58:55 +0300 |
---|---|---|
committer | Rémi Denis-Courmont <remi@remlab.net> | 2024-08-01 19:29:40 +0300 |
commit | 2f083fd5817f99e9874acf4fd04e6b4a7c47bb86 (patch) | |
tree | 66aaa2a435115e79b8f4244240a62f2ab8c5f6bd | |
parent | c48213b2dc0b6329359a84e0d332e4697d84ea90 (diff) | |
download | ffmpeg-2f083fd5817f99e9874acf4fd04e6b4a7c47bb86.tar.gz |
lavc/audiodsp: drop R-V F vector_clipf
This is now firmly slower than C.
SiFive-U74 (cycles):
audiodsp.vector_clipf_c: 31.2
audiodsp.vector_clipf_rvf: 39.5
-rw-r--r-- | libavcodec/riscv/Makefile | 1 | ||||
-rw-r--r-- | libavcodec/riscv/audiodsp_init.c | 8 | ||||
-rw-r--r-- | libavcodec/riscv/audiodsp_rvf.S | 50 |
3 files changed, 1 insertions, 58 deletions
diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index 58666e1d35..b3a6b588c9 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -9,7 +9,6 @@ RVVB-OBJS-$(CONFIG_AC3DSP) += riscv/ac3dsp_rvvb.o OBJS-$(CONFIG_ALAC_DECODER) += riscv/alacdsp_init.o RVV-OBJS-$(CONFIG_ALAC_DECODER) += riscv/alacdsp_rvv.o OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_init.o -RV-OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_rvf.o RVV-OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_rvv.o OBJS-$(CONFIG_BLOCKDSP) += riscv/blockdsp_init.o RVV-OBJS-$(CONFIG_BLOCKDSP) += riscv/blockdsp_rvv.o diff --git a/libavcodec/riscv/audiodsp_init.c b/libavcodec/riscv/audiodsp_init.c index f606406429..5750d4d8a7 100644 --- a/libavcodec/riscv/audiodsp_init.c +++ b/libavcodec/riscv/audiodsp_init.c @@ -24,8 +24,6 @@ #include "libavutil/cpu.h" #include "libavcodec/audiodsp.h" -void ff_vector_clipf_rvf(float *dst, const float *src, int len, float min, float max); - int32_t ff_scalarproduct_int16_rvv(const int16_t *v1, const int16_t *v2, int len); void ff_vector_clip_int32_rvv(int32_t *dst, const int32_t *src, int32_t min, int32_t max, unsigned int len); @@ -33,12 +31,9 @@ void ff_vector_clipf_rvv(float *dst, const float *src, int len, float min, float av_cold void ff_audiodsp_init_riscv(AudioDSPContext *c) { -#if HAVE_RV +#if HAVE_RVV int flags = av_get_cpu_flags(); - if (flags & AV_CPU_FLAG_RVF) - c->vector_clipf = ff_vector_clipf_rvf; -#if HAVE_RVV if (flags & AV_CPU_FLAG_RVB_ADDR) { if (flags & AV_CPU_FLAG_RVV_I32) { c->scalarproduct_int16 = ff_scalarproduct_int16_rvv; @@ -48,5 +43,4 @@ av_cold void ff_audiodsp_init_riscv(AudioDSPContext *c) c->vector_clipf = ff_vector_clipf_rvv; } #endif -#endif } diff --git a/libavcodec/riscv/audiodsp_rvf.S b/libavcodec/riscv/audiodsp_rvf.S deleted file mode 100644 index 97aa930ab5..0000000000 --- a/libavcodec/riscv/audiodsp_rvf.S +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright © 2022 Rémi Denis-Courmont. - * - * 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 "libavutil/riscv/asm.S" - -func ff_vector_clipf_rvf, f - lpad 0 -NOHWF fmv.w.x fa0, a3 -NOHWF fmv.w.x fa1, a4 -1: - flw ft0, (a1) - flw ft1, 4(a1) - fmax.s ft0, ft0, fa0 - flw ft2, 8(a1) - fmax.s ft1, ft1, fa0 - flw ft3, 12(a1) - fmax.s ft2, ft2, fa0 - addi a2, a2, -4 - fmax.s ft3, ft3, fa0 - addi a1, a1, 16 - fmin.s ft0, ft0, fa1 - fmin.s ft1, ft1, fa1 - fsw ft0, (a0) - fmin.s ft2, ft2, fa1 - fsw ft1, 4(a0) - fmin.s ft3, ft3, fa1 - fsw ft2, 8(a0) - fsw ft3, 12(a0) - addi a0, a0, 16 - bnez a2, 1b - - ret -endfunc |