T-Head C908 (ns): h264_weight2_8_c: 1607.8 h264_weight2_8_rvv_i32: 515.0 (before) h264_weight2_8_rvv_i32: 348.5 (after) h264_weight4_8_c: 2255.8 h264_weight4_8_rvv_i32: 1015.0 (before) h264_weight4_8_rvv_i32: 691.0 (after) h264_weight8_8_c: 3857.5 h264_weight8_8_rvv_i32: 2218.8 (before) h264_weight8_8_rvv_i32: 1561.3 (after) h264_weight16_8_c: 7431.5 h264_weight16_8_rvv_i32: 2737.3 (before) h264_weight16_8_rvv_i32: 1848.3 (after) SpacemiT X60 (ns): h264_weight2_8_c: 1624.1 h264_weight2_8_rvv_i32: 352.6 (before) h264_weight2_8_rvv_i32: 259.3 (after) h264_weight4_8_c: 2259.3 h264_weight4_8_rvv_i32: 685.8 (before) h264_weight4_8_rvv_i32: 530.3 (after) h264_weight8_8_c: 4103.3 h264_weight8_8_rvv_i32: 1581.8 (before) h264_weight8_8_rvv_i32: 1238.6 (after) h264_weight16_8_c: 7624.3 h264_weight16_8_rvv_i32: 2738.1 (before) h264_weight16_8_rvv_i32: 1853.3 (after)
Unified · Split
| @@ -32,17 +32,15 @@ func ff_h264_weight_pixels_simple_8_rvv, zve32x · 31 unmodified lines | |||
| 32 | csrwi vxrm, 0 | 32 | csrwi vxrm, 0 |
| 33 | sll a5, a5, a3 | 33 | sll a5, a5, a3 |
| 34 | 1: | 34 | 1: |
| 35 | vsetvli zero, a6, e32, m4, ta, ma | 35 | vsetvli zero, a6, e16, m2, ta, ma |
| 36 | vle8.v v8, (a0) | 36 | vle8.v v8, (a0) |
| 37 | addi a2, a2, -1 | 37 | addi a2, a2, -1 |
| 38 | vmv.v.x v16, a5 | ||
| 39 | vsetvli zero, zero, e16, m2, ta, ma | ||
| 40 | vzext.vf2 v24, v8 | 38 | vzext.vf2 v24, v8 |
| 41 | vwmaccsu.vx v16, a4, v24 | 39 | vmul.vx v16, v24, a4 |
| 42 | vnclip.wx v16, v16, a3 | 40 | vsadd.vx v16, v16, a5 |
| 43 | vmax.vx v16, v16, zero | 41 | vmax.vx v16, v16, zero |
| 44 | vsetvli zero, zero, e8, m1, ta, ma | 42 | vsetvli zero, zero, e8, m1, ta, ma |
| 45 | vnclipu.wi v8, v16, 0 | 43 | vnclipu.wx v8, v16, a3 |
| 46 | vse8.v v8, (a0) | 44 | vse8.v v8, (a0) |
| 47 | add a0, a0, a1 | 45 | add a0, a0, a1 |
| 48 | bnez a2, 1b | 46 | bnez a2, 1b |
| @@ -85,23 +83,20 @@ func ff_h264_weight_pixels_8_rvv, zve32x · 36 unmodified lines | |||
| 85 | mv t0, a0 | 83 | mv t0, a0 |
| 86 | mv t6, a6 | 84 | mv t6, a6 |
| 87 | 2: | 85 | 2: |
| 88 | vsetvli t2, a2, e32, m8, ta, ma | 86 | vsetvli t2, a2, e16, m8, ta, ma |
| 89 | vlsseg2e8.v v0, (t0), a1 | 87 | vlsseg2e8.v v0, (t0), a1 |
| 90 | addi t6, t6, -2 | 88 | addi t6, t6, -2 |
| 91 | vmv.v.x v16, a5 | 89 | vzext.vf2 v16, v0 |
| 92 | vmv.v.x v24, a5 | 90 | vzext.vf2 v24, v4 |
| 93 | vsetvli zero, zero, e16, m4, ta, ma | 91 | vmul.vx v16, v16, a4 |
| 94 | vzext.vf2 v8, v0 | 92 | vmul.vx v24, v24, a4 |
| 95 | vzext.vf2 v12, v2 | 93 | vsadd.vx v16, v16, a5 |
| 96 | vwmaccsu.vx v16, a4, v8 | 94 | vsadd.vx v24, v24, a5 |
| 97 | vwmaccsu.vx v24, a4, v12 | 95 | vmax.vx v16, v16, zero |
| 98 | vnclip.wx v8, v16, a3 | 96 | vmax.vx v24, v24, zero |
| 99 | vnclip.wx v12, v24, a3 | 97 | vsetvli zero, zero, e8, m4, ta, ma |
| 100 | vmax.vx v8, v8, zero | 98 | vnclipu.wx v0, v16, a3 |
| 101 | vmax.vx v12, v12, zero | 99 | vnclipu.wx v4, v24, a3 |
| 102 | vsetvli zero, zero, e8, m2, ta, ma | ||
| 103 | vnclipu.wi v0, v8, 0 | ||
| 104 | vnclipu.wi v2, v12, 0 | ||
| 105 | vssseg2e8.v v0, (t0), a1 | 100 | vssseg2e8.v v0, (t0), a1 |
| 106 | addi t0, t0, 2 | 101 | addi t0, t0, 2 |
| 107 | bnez t6, 2b | 102 | bnez t6, 2b |