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 | 28 | void ff_vp8_idct_dc_add_rvv(uint8_t *dst, int16_t block[16], ptrdiff_t stride); |
| 29 | 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 | 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 | 37 | if (flags & AV_CPU_FLAG_RVV_I32 && ff_get_rv_vlenb() >= 16) { |
| 37 | 38 | c->vp8_idct_dc_add = ff_vp8_idct_dc_add_rvv; |
| 38 | 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 | 44 | #endif |
| 41 | 45 | } |
| @@ -58,3 +58,16 @@ func ff_vp8_idct_dc_add4y_rvv, zve32x · 57 unmodified lines | ||
| 58 | 58 | |
| 59 | 59 | ret |
| 60 | 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 | |