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 | 32 | csrwi vxrm, 0 |
| 33 | 33 | sll a5, a5, a3 |
| 34 | 34 | 1: |
| 35 | − vsetvli zero, a6, e32, m4, ta, ma | |
| 35 | + vsetvli zero, a6, e16, m2, ta, ma | |
| 36 | 36 | vle8.v v8, (a0) |
| 37 | 37 | addi a2, a2, -1 |
| 38 | − vmv.v.x v16, a5 | |
| 39 | − vsetvli zero, zero, e16, m2, ta, ma | |
| 40 | 38 | vzext.vf2 v24, v8 |
| 41 | − vwmaccsu.vx v16, a4, v24 | |
| 42 | − vnclip.wx v16, v16, a3 | |
| 39 | + vmul.vx v16, v24, a4 | |
| 40 | + vsadd.vx v16, v16, a5 | |
| 43 | 41 | vmax.vx v16, v16, zero |
| 44 | 42 | vsetvli zero, zero, e8, m1, ta, ma |
| 45 | − vnclipu.wi v8, v16, 0 | |
| 43 | + vnclipu.wx v8, v16, a3 | |
| 46 | 44 | vse8.v v8, (a0) |
| 47 | 45 | add a0, a0, a1 |
| 48 | 46 | bnez a2, 1b |
| @@ -85,23 +83,20 @@ func ff_h264_weight_pixels_8_rvv, zve32x · 36 unmodified lines | ||
| 85 | 83 | mv t0, a0 |
| 86 | 84 | mv t6, a6 |
| 87 | 85 | 2: |
| 88 | − vsetvli t2, a2, e32, m8, ta, ma | |
| 86 | + vsetvli t2, a2, e16, m8, ta, ma | |
| 89 | 87 | vlsseg2e8.v v0, (t0), a1 |
| 90 | 88 | addi t6, t6, -2 |
| 91 | − vmv.v.x v16, a5 | |
| 92 | − vmv.v.x v24, a5 | |
| 93 | − vsetvli zero, zero, e16, m4, ta, ma | |
| 94 | − vzext.vf2 v8, v0 | |
| 95 | − vzext.vf2 v12, v2 | |
| 96 | − vwmaccsu.vx v16, a4, v8 | |
| 97 | − vwmaccsu.vx v24, a4, v12 | |
| 98 | − vnclip.wx v8, v16, a3 | |
| 99 | − vnclip.wx v12, v24, a3 | |
| 100 | − vmax.vx v8, v8, zero | |
| 101 | − vmax.vx v12, v12, zero | |
| 102 | − vsetvli zero, zero, e8, m2, ta, ma | |
| 103 | − vnclipu.wi v0, v8, 0 | |
| 104 | − vnclipu.wi v2, v12, 0 | |
| 89 | + vzext.vf2 v16, v0 | |
| 90 | + vzext.vf2 v24, v4 | |
| 91 | + vmul.vx v16, v16, a4 | |
| 92 | + vmul.vx v24, v24, a4 | |
| 93 | + vsadd.vx v16, v16, a5 | |
| 94 | + vsadd.vx v24, v24, a5 | |
| 95 | + vmax.vx v16, v16, zero | |
| 96 | + vmax.vx v24, v24, zero | |
| 97 | + vsetvli zero, zero, e8, m4, ta, ma | |
| 98 | + vnclipu.wx v0, v16, a3 | |
| 99 | + vnclipu.wx v4, v24, a3 | |
| 105 | 100 | vssseg2e8.v v0, (t0), a1 |
| 106 | 101 | addi t0, t0, 2 |
| 107 | 102 | bnez t6, 2b |