1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-02-04 06:08:26 +02:00

lavc/audiodsp: RISC-V V vector_clipf

This commit is contained in:
Rémi Denis-Courmont 2022-09-26 17:52:41 +03:00 committed by Lynne
parent 27da9514c3
commit f127a5d29d
2 changed files with 20 additions and 0 deletions

View File

@ -28,6 +28,7 @@ void ff_vector_clipf_rvf(float *dst, const float *src, int len, float min, float
void ff_vector_clip_int32_rvv(int32_t *dst, const int32_t *src, int32_t min,
int32_t max, unsigned int len);
void ff_vector_clipf_rvv(float *dst, const float *src, int len, float min, float max);
av_cold void ff_audiodsp_init_riscv(AudioDSPContext *c)
{
@ -38,5 +39,7 @@ av_cold void ff_audiodsp_init_riscv(AudioDSPContext *c)
#if HAVE_RVV
if (flags & AV_CPU_FLAG_RVV_I32)
c->vector_clip_int32 = ff_vector_clip_int32_rvv;
if (flags & AV_CPU_FLAG_RVV_F32)
c->vector_clipf = ff_vector_clipf_rvv;
#endif
}

View File

@ -34,3 +34,20 @@ func ff_vector_clip_int32_rvv, zve32x
ret
endfunc
func ff_vector_clipf_rvv, zve32f
NOHWF fmv.w.x fa0, a3
NOHWF fmv.w.x fa1, a4
1:
vsetvli t0, a2, e32, m1, ta, ma
vle32.v v8, (a1)
sub a2, a2, t0
vfmax.vf v8, v8, fa0
sh2add a1, t0, a1
vfmin.vf v8, v8, fa1
vse32.v v8, (a0)
sh2add a0, t0, a0
bnez a2, 1b
ret
endfunc