diff options
author | Rémi Denis-Courmont <remi@remlab.net> | 2023-11-19 14:49:28 +0200 |
---|---|---|
committer | Rémi Denis-Courmont <remi@remlab.net> | 2023-11-23 18:57:18 +0200 |
commit | b88d4058f95de7ebf8322358d2e72cbeaffec49e (patch) | |
tree | 6c9455528ce5acde3db1f6532e3b5c5b0af3fa73 /libavcodec/riscv/g722dsp_rvv.S | |
parent | e33ce0d9dd8136d9d1a5eb17863c2f6d4d5f131f (diff) | |
download | ffmpeg-b88d4058f95de7ebf8322358d2e72cbeaffec49e.tar.gz |
lavc/g722dsp: optimise R-V V apply_qmf
This stores the constant coefficients deinterleaved, so that they can be
loaded directly with NF=0. Unfortunately, we cannot optimise loading the
input, due to insufficient memory alignment (not 32-bit).
Before:
g722_apply_qmf_c: 82.5
g722_apply_qmf_rvv_i32: 78.2
After:
g722_apply_qmf_c: 82.5
g722_apply_qmf_rvv_i32: 65.2
Diffstat (limited to 'libavcodec/riscv/g722dsp_rvv.S')
-rw-r--r-- | libavcodec/riscv/g722dsp_rvv.S | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/libavcodec/riscv/g722dsp_rvv.S b/libavcodec/riscv/g722dsp_rvv.S index 350be8dc1f..981d5cecd8 100644 --- a/libavcodec/riscv/g722dsp_rvv.S +++ b/libavcodec/riscv/g722dsp_rvv.S @@ -24,7 +24,9 @@ func ff_g722_apply_qmf_rvv, zve32x lla t0, qmf_coeffs vsetivli zero, 12, e16, m2, ta, ma vlseg2e16.v v28, (a0) - vlseg2e16.v v24, (t0) + addi t1, t0, 12 * 2 + vle16.v v24, (t0) + vle16.v v26, (t1) vwmul.vv v16, v28, v24 vwmul.vv v20, v30, v26 vsetivli zero, 12, e32, m4, ta, ma @@ -41,26 +43,26 @@ endfunc const qmf_coeffs, align=2 .short 3 .short -11 - .short -11 - .short 53 .short 12 - .short -156 .short 32 - .short 362 .short -210 - .short -805 .short 951 .short 3876 - .short 3876 - .short 951 .short -805 - .short -210 .short 362 - .short 32 .short -156 - .short 12 .short 53 .short -11 .short -11 + .short 53 + .short -156 + .short 362 + .short -805 + .short 3876 + .short 951 + .short -210 + .short 32 + .short 12 + .short -11 .short 3 endconst |