diff options
author | Rémi Denis-Courmont <remi@remlab.net> | 2024-05-25 16:43:17 +0300 |
---|---|---|
committer | Rémi Denis-Courmont <remi@remlab.net> | 2024-05-28 19:44:11 +0300 |
commit | a11122f9c63bdb66e3f8bc7e2cd380cdc9c9a51c (patch) | |
tree | e1611e0e475de63c039b6aa0e0801882e62ad242 | |
parent | 4e56455d3672beccd63f922cdc5052aa48f088bd (diff) | |
download | ffmpeg-a11122f9c63bdb66e3f8bc7e2cd380cdc9c9a51c.tar.gz |
lavc/vp8dsp: save one R-V GPR
This saves one instruction and frees up A5, which will be repurposed in
later changes. Unfortunately, we need to add quite a lot of alternative
code for this.
-rw-r--r-- | libavcodec/riscv/vp8dsp_rvv.S | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libavcodec/riscv/vp8dsp_rvv.S b/libavcodec/riscv/vp8dsp_rvv.S index dc48197cf1..3b2d8600d6 100644 --- a/libavcodec/riscv/vp8dsp_rvv.S +++ b/libavcodec/riscv/vp8dsp_rvv.S @@ -201,24 +201,33 @@ endconst .macro epel_load dst len size type from_mem regtype .ifc \type,v - mv a5, a3 + sub t6, a2, a3 + add a7, a2, a3 .else - li a5, 1 + addi t6, a2, -1 + addi a7, a2, 1 .endif - sub t6, a2, a5 - add a7, a2, a5 .if \from_mem vle8.v v24, (a2) vle8.v v22, (t6) vle8.v v26, (a7) - add a7, a7, a5 +.ifc \type,v + add a7, a7, a3 +.else + addi a7, a7, 1 +.endif vle8.v v28, (a7) vwmulu.vx v16, v24, \regtype\()2 vwmulu.vx v20, v26, \regtype\()3 .ifc \size,6 - sub t6, t6, a5 - add a7, a7, a5 +.ifc \type,v + sub t6, t6, a3 + add a7, a7, a3 +.else + addi t6, t6, -1 + addi a7, a7, 1 +.endif vle8.v v24, (t6) vle8.v v26, (a7) vwmaccu.vx v16, \regtype\()0, v24 |