aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorRémi Denis-Courmont <remi@remlab.net>2024-05-25 16:43:17 +0300
committerRémi Denis-Courmont <remi@remlab.net>2024-05-28 19:44:11 +0300
commita11122f9c63bdb66e3f8bc7e2cd380cdc9c9a51c (patch)
treee1611e0e475de63c039b6aa0e0801882e62ad242 /libavcodec
parent4e56455d3672beccd63f922cdc5052aa48f088bd (diff)
downloadffmpeg-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.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/riscv/vp8dsp_rvv.S23
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