diff options
author | sunyuechi <sunyuechi@iscas.ac.cn> | 2024-05-14 00:59:18 +0800 |
---|---|---|
committer | Rémi Denis-Courmont <remi@remlab.net> | 2024-05-15 19:52:25 +0300 |
commit | aa9dbd91cfde09af2372b45680c184d02dc454b2 (patch) | |
tree | bcc60f1d2188800e22ab714cb2f90ec2683cc733 /libavcodec/riscv/vp9_intra_rvi.S | |
parent | a3e45063c0b132eff0122258bd12691357cff1c6 (diff) | |
download | ffmpeg-aa9dbd91cfde09af2372b45680c184d02dc454b2.tar.gz |
lavc/vp9dsp: R-V ipred vert
C908:
vp9_vert_8x8_8bpp_c: 22.0
vp9_vert_8x8_8bpp_rvi: 15.7
vp9_vert_16x16_8bpp_c: 71.2
vp9_vert_16x16_8bpp_rvi: 39.0
vp9_vert_32x32_8bpp_c: 300.2
vp9_vert_32x32_8bpp_rvi: 135.2
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
Diffstat (limited to 'libavcodec/riscv/vp9_intra_rvi.S')
-rw-r--r-- | libavcodec/riscv/vp9_intra_rvi.S | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/libavcodec/riscv/vp9_intra_rvi.S b/libavcodec/riscv/vp9_intra_rvi.S new file mode 100644 index 0000000000..16b6bdb25a --- /dev/null +++ b/libavcodec/riscv/vp9_intra_rvi.S @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2024 Institue of Software Chinese Academy of Sciences (ISCAS). + * + * 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" + +#if __riscv_xlen >= 64 +func ff_v_32x32_rvi + ld t0, (a3) + ld t1, 8(a3) + ld t2, 16(a3) + ld t3, 24(a3) + .rept 16 + add a7, a0, a1 + sd t0, (a0) + sd t1, 8(a0) + sd t2, 16(a0) + sd t3, 24(a0) + sh1add a0, a1, a0 + sd t0, (a7) + sd t1, 8(a7) + sd t2, 16(a7) + sd t3, 24(a7) + .endr + + ret +endfunc + +func ff_v_16x16_rvi + ld t0, (a3) + ld t1, 8(a3) + .rept 8 + add a7, a0, a1 + sd t0, (a0) + sd t1, 8(a0) + sh1add a0, a1, a0 + sd t0, (a7) + sd t1, 8(a7) + .endr + + ret +endfunc + +func ff_v_8x8_rvi + ld t0, (a3) + .rept 4 + add a7, a0, a1 + sd t0, (a0) + sh1add a0, a1, a0 + sd t0, (a7) + .endr + + ret +endfunc +#endif |