xref: /aosp_15_r20/external/libdav1d/src/riscv/cdef.h (revision c09093415860a1c2373dacd84c4fde00c507cdfd)
1 #include "src/cpu.h"
2 #include "src/cdef.h"
3 
4 extern void BF(dav1d_cdef_filter_block_4x4, rvv)(pixel *dst, const ptrdiff_t dst_stride,
5                                     const pixel (*left)[2],
6                                     const pixel *const top, const pixel *const bottom,
7                                     const int pri_strength, const int sec_strength, const int dir,
8                                     const int damping, const enum CdefEdgeFlags edges HIGHBD_DECL_SUFFIX);
9 
10 extern void BF(dav1d_cdef_filter_block_4x8, rvv)(pixel *dst, const ptrdiff_t dst_stride,
11                                     const pixel (*left)[2],
12                                     const pixel *const top, const pixel *const bottom,
13                                     const int pri_strength, const int sec_strength, const int dir,
14                                     const int damping, const enum CdefEdgeFlags edges HIGHBD_DECL_SUFFIX);
15 
16 extern void BF(dav1d_cdef_filter_block_8x8, rvv)(pixel *dst, const ptrdiff_t dst_stride,
17                                     const pixel (*left)[2],
18                                     const pixel *const top, const pixel *const bottom,
19                                     const int pri_strength, const int sec_strength, const int dir,
20                                     const int damping, const enum CdefEdgeFlags edges HIGHBD_DECL_SUFFIX);
21 
22 
cdef_dsp_init_riscv(Dav1dCdefDSPContext * const c)23 static ALWAYS_INLINE void cdef_dsp_init_riscv(Dav1dCdefDSPContext *const c) {
24     const unsigned flags = dav1d_get_cpu_flags();
25     if (!(flags & DAV1D_RISCV_CPU_FLAG_V)) return;
26 
27     // c->dir = BF(dav1d_cdef_dir, rvv);
28     c->fb[0] = BF(dav1d_cdef_filter_block_8x8, rvv);
29     c->fb[1] = BF(dav1d_cdef_filter_block_4x8, rvv);
30     c->fb[2] = BF(dav1d_cdef_filter_block_4x4, rvv);
31 }
32