c908: vp8_idct_dc_add4uv_c: 387.7 vp8_idct_dc_add4uv_rvv_i32: 134.5
Unified · Split
| @@ -27,6 +27,7 @@ · 26 unmodified lines | |||
| 27 | 27 | ||
| 28 | void ff_vp8_idct_dc_add_rvv(uint8_t *dst, int16_t block[16], ptrdiff_t stride); | 28 | void ff_vp8_idct_dc_add_rvv(uint8_t *dst, int16_t block[16], ptrdiff_t stride); |
| 29 | void ff_vp8_idct_dc_add4y_rvv(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); | 29 | void ff_vp8_idct_dc_add4y_rvv(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); |
| 30 | void ff_vp8_idct_dc_add4uv_rvv(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); | ||
| 30 | 31 | ||
| 31 | av_cold void ff_vp8dsp_init_riscv(VP8DSPContext *c) | 32 | av_cold void ff_vp8dsp_init_riscv(VP8DSPContext *c) |
| 32 | { | 33 | { |
| @@ -36,6 +37,9 @@ av_cold void ff_vp8dsp_init_riscv(VP8DSPContext *c) · 3 unmodified lines | |||
| 36 | if (flags & AV_CPU_FLAG_RVV_I32 && ff_get_rv_vlenb() >= 16) { | 37 | if (flags & AV_CPU_FLAG_RVV_I32 && ff_get_rv_vlenb() >= 16) { |
| 37 | c->vp8_idct_dc_add = ff_vp8_idct_dc_add_rvv; | 38 | c->vp8_idct_dc_add = ff_vp8_idct_dc_add_rvv; |
| 38 | c->vp8_idct_dc_add4y = ff_vp8_idct_dc_add4y_rvv; | 39 | c->vp8_idct_dc_add4y = ff_vp8_idct_dc_add4y_rvv; |
| 40 | if (flags & AV_CPU_FLAG_RVB_ADDR) { | ||
| 41 | c->vp8_idct_dc_add4uv = ff_vp8_idct_dc_add4uv_rvv; | ||
| 42 | } | ||
| 39 | } | 43 | } |
| 40 | #endif | 44 | #endif |
| 41 | } | 45 | } |
| @@ -58,3 +58,16 @@ func ff_vp8_idct_dc_add4y_rvv, zve32x · 57 unmodified lines | |||
| 58 | 58 | ||
| 59 | ret | 59 | ret |
| 60 | endfunc | 60 | endfunc |
| 61 | |||
| 62 | func ff_vp8_idct_dc_add4uv_rvv, zve32x | ||
| 63 | vsetivli zero, 4, e8, mf4, ta, ma | ||
| 64 | vp8_idct_dc_addy | ||
| 65 | vp8_idct_dc_add | ||
| 66 | addi a0, a0, -4 | ||
| 67 | sh2add a0, a2, a0 | ||
| 68 | addi a1, a1, 32 | ||
| 69 | vp8_idct_dc_addy | ||
| 70 | vp8_idct_dc_add | ||
| 71 | |||
| 72 | ret | ||
| 73 | endfunc | ||