[FFmpeg-devel] enabling sse2

James Darnley jdarnley at obe.tv
Wed Feb 22 02:27:44 EET 2017


 libavcodec/x86/h264_deblock.asm |  1 +
 libavcodec/x86/h264dsp_init.c   | 10 ++++++++++
 2 files changed, 11 insertions(+)

Okay, enabling sse2 gets me the results below.  It turns out I should allow sse2
despite some previous testing.  Should I leave avx?  Sometimes it is a few
percentage points faster.

I should really see how this fares on an sse2slow system.

Yorkfield:
    deblock_v_chroma:
        sse2: 1.02x faster (729±8.6 vs. 714±8.5 decicycles) compared with mmxext
    deblock_h_chroma:
        sse2: 1.08x faster (1087±8.3 vs. 1010±8.4 decicycles) compared with mmxext
    deblock_h_chroma422:
        sse2: 1.16x faster (1492±12.7 vs. 1291±12.8 decicycles) compared with mmxext
    deblock_v_chroma_intra:
        sse2: 1.00x faster (731±8.2 vs. 731±9.3 decicycles) compared with mmxext
    deblock_h_chroma_intra:
        sse2: 1.07x faster (1325±9.8 vs. 1238±9.7 decicycles) compared with mmxext
    deblock_h_chroma422_intra:
        sse2: 1.09x faster (1953±19.9 vs. 1795±18.9 decicycles) compared with mmxext

Lynnfield (on Windows with no SSD, should probably ignore this result):
    deblock_v_chroma:
        sse2: 0.98x faster (539±6.3 vs. 550±6.2 decicycles) compared with mmxext
    deblock_h_chroma:
        sse2: 0.97x faster (730±5.7 vs. 752±5.7 decicycles) compared with mmxext
    deblock_h_chroma422:
        sse2: 0.99x faster (1090±17.9 vs. 1104±22.1 decicycles) compared with mmxext
    deblock_v_chroma_intra:
        sse2: 0.97x faster (534±8.6 vs. 551±10.0 decicycles) compared with mmxext
    deblock_h_chroma_intra:
        sse2: 0.96x faster (795±9.0 vs. 828±9.7 decicycles) compared with mmxext
    deblock_h_chroma422_intra:
        sse2: 1.02x faster (1200±18.7 vs. 1180±16.6 decicycles) compared with mmxext

Haswell:
    deblock_v_chroma:
        sse2: 1.15x faster (559±5.8 vs. 484±4.9 decicycles) compared with mmxext
        avx:  1.19x faster (559±5.8 vs. 468±4.9 decicycles) compared with mmxext
    deblock_h_chroma:
        sse2: 1.13x faster (752±4.6 vs. 663±4.6 decicycles) compared with mmxext
        avx:  1.14x faster (752±4.6 vs. 659±4.6 decicycles) compared with mmxext
    deblock_h_chroma422:
        sse2: 1.11x faster (1095±10.4 vs. 984±1.1 decicycles) compared with mmxext
        avx:  1.14x faster (1095±10.4 vs. 961±0.5 decicycles) compared with mmxext
    deblock_v_chroma_intra:
        sse2: 1.05x faster (491±4.9 vs. 468±5.2 decicycles) compared with mmxext
        avx:  1.09x faster (491±4.9 vs. 452±5.3 decicycles) compared with mmxext
    deblock_h_chroma_intra:
        sse2: 1.16x faster (730±4.2 vs. 629±4.2 decicycles) compared with mmxext
        avx:  1.13x faster (730±4.2 vs. 645±4.1 decicycles) compared with mmxext
    deblock_h_chroma422_intra:
        sse2: 1.17x faster (1128±2.7 vs. 968±3.1 decicycles) compared with mmxext
        avx:  1.17x faster (1128±2.7 vs. 962±1.4 decicycles) compared with mmxext

Skylake:
    deblock_v_chroma:
        sse2: 1.24x faster (681±4.5 vs. 547±4.9 decicycles) compared with mmxext
        avx:  1.27x faster (681±4.5 vs. 534±5.5 decicycles) compared with mmxext
    deblock_h_chroma:
        sse2: 1.31x faster (876±4.7 vs. 668±5.4 decicycles) compared with mmxext
        avx:  1.31x faster (876±4.7 vs. 671±5.4 decicycles) compared with mmxext
    deblock_h_chroma422:
        sse2: 1.39x faster (1322±3.7 vs. 953±5.3 decicycles) compared with mmxext
        avx:  1.40x faster (1322±3.7 vs. 946±6.1 decicycles) compared with mmxext
    deblock_v_chroma_intra:
        sse2: 1.12x faster (586±5.6 vs. 522±6.2 decicycles) compared with mmxext
        avx:  1.15x faster (586±5.6 vs. 510±6.1 decicycles) compared with mmxext
    deblock_h_chroma_intra:
        sse2: 1.26x faster (842±4.4 vs. 668±11.7 decicycles) compared with mmxext
        avx:  1.27x faster (842±4.4 vs. 663±5.1 decicycles) compared with mmxext
    deblock_h_chroma422_intra:
        sse2: 1.38x faster (1328±3.3 vs. 964±3.2 decicycles) compared with mmxext
        avx:  1.38x faster (1328±3.3 vs. 960±4.4 decicycles) compared with mmxext

Skylake-U:
    deblock_v_chroma:
        sse2: 1.21x faster (720±7.2 vs. 594±7.9 decicycles) compared with mmxext
        avx:  1.25x faster (720±7.2 vs. 575±7.7 decicycles) compared with mmxext
    deblock_h_chroma:
        sse2: 1.23x faster (941±6.5 vs. 763±8.1 decicycles) compared with mmxext
        avx:  1.26x faster (941±6.5 vs. 748±7.5 decicycles) compared with mmxext
    deblock_h_chroma422:
        sse2: 1.30x faster (1486±17.3 vs. 1145±7.6 decicycles) compared with mmxext
        avx:  1.38x faster (1486±17.3 vs. 1077±5.4 decicycles) compared with mmxext
    deblock_v_chroma_intra:
        sse2: 1.04x faster (642±7.4 vs. 616±10.5 decicycles) compared with mmxext
        avx:  1.12x faster (642±7.4 vs. 575±8.9 decicycles) compared with mmxext
    deblock_h_chroma_intra:
        sse2: 1.18x faster (931±6.8 vs. 789±8.6 decicycles) compared with mmxext
        avx:  1.27x faster (931±6.8 vs. 733±10.6 decicycles) compared with mmxext
    deblock_h_chroma422_intra:
        sse2: 1.28x faster (1478±24.3 vs. 1154±10.2 decicycles) compared with mmxext
        avx:  1.39x faster (1478±24.3 vs. 1066±6.9 decicycles) compared with mmxext

Kaby Lake Pentium:
    deblock_v_chroma:
        sse2: 1.25x faster (755±6.1 vs. 603±6.4 decicycles) compared with mmxext
    deblock_h_chroma:
        sse2: 1.31x faster (986±6.4 vs. 755±7.1 decicycles) compared with mmxext
    deblock_h_chroma422:
        sse2: 1.39x faster (1595±50.2 vs. 1150±46.6 decicycles) compared with mmxext
    deblock_v_chroma_intra:
        sse2: 1.11x faster (665±7.2 vs. 598±7.6 decicycles) compared with mmxext
    deblock_h_chroma_intra:
        sse2: 1.26x faster (960±6.4 vs. 760±6.5 decicycles) compared with mmxext
    deblock_h_chroma422_intra:
        sse2: 1.38x faster (1609±66.7 vs. 1168±39.4 decicycles) compared with mmxext



More information about the ffmpeg-devel mailing list