[vlc-devel] [PATCH 00/25] miscellaneous x86 SIMD work

Victorien Le Couviour--Tuffet victorien.lecouviour.tuffet at gmail.com
Tue Apr 14 12:40:11 CEST 2020


Some x86 SIMD work here and there.

Adds a test infrastructure for deinterlace video filters
Adds a benchmark tool for x86 asm (extendable to NEON)
Removes outdated SIMD technology deinterlace code
Adds / rewrites some SIMD

Lyndon Brown (2):
  configure: fix AVX / AVX2 inline check
  cpu: add missing VLC_AVX target attribute

Victorien Le Couviour--Tuffet (23):
  cpu: detect AVX and AVX2 on Windows / macOS
  cpu: add CPU feature masking
  cpu: force feature support runtime check
  test: add asm benchmark tool
  nasm: update x86inc.asm to its most recent version
  align planes to 32 instead of 16, for aligned AVX2 loads
  packetizer: fix coding style in starcode_helper.h
  packetizer: optimize startcode_FindAnnexB wrapper
  bench_asm: add startcode
  packetizer: rewrite startcode_FindAnnexB SSE2 asm
  packetizer: add startcode_FindAnnexB SSSE3 asm
  packetizer: add startcode_FindAnnexB AVX2 asm
  deinterlace: remove AltiVec, 3dNow! and MMX
  deinterlace: one function pointer per frame
  deinterlace: fix Merge{8,16}BitGeneric
  deinterlace: add tests for SIMD optimized implementations
  bench_asm: add deinterlacer
  deinterlace: rewrite render_linear SSE2 asm
  deinterlace: rewrite render_mean SSE2 asm
  deinterlace: rewrite render_blend SSE2 asm
  deinterlace: add render_linear AVX2 asm
  deinterlace: add render_mean AVX2 asm
  deinterlace: add render_blend AVX2 asm

 Makefile.am                                   |   7 +
 configure.ac                                  |   4 +-
 extras/include/x86/x86inc.asm                 | 215 +++++---
 extras/include/x86/x86util.asm                |   1 -
 include/vlc_cpu.h                             | 125 +----
 modules/codec/Makefile.am                     |  13 +-
 modules/demux/Makefile.am                     |   6 +-
 modules/mux/Makefile.am                       |   3 +-
 modules/packetizer/Makefile.am                |  11 +-
 modules/packetizer/h264.c                     |   3 +-
 modules/packetizer/hevc.c                     |   3 +-
 modules/packetizer/hxxx_nal.h                 |   8 +-
 modules/packetizer/mpeg4video.c               |   3 +-
 modules/packetizer/mpegvideo.c                |   3 +-
 modules/packetizer/startcode.asm              | 276 ++++++++++
 modules/packetizer/startcode_helper.h         | 144 ++---
 modules/packetizer/vc1.c                      |   3 +-
 modules/stream_out/Makefile.am                |   3 +-
 modules/video_filter/Makefile.am              |   1 +
 modules/video_filter/deinterlace/algo_basic.c | 502 ++++++++++++++----
 modules/video_filter/deinterlace/algo_basic.h |  12 +-
 .../deinterlace/algo_basic_x86.asm            | 153 ++++++
 modules/video_filter/deinterlace/algo_ivtc.c  |   6 +
 modules/video_filter/deinterlace/algo_ivtc.h  |   2 +-
 .../video_filter/deinterlace/algo_phosphor.c  |  12 +-
 .../video_filter/deinterlace/algo_phosphor.h  |   4 +-
 modules/video_filter/deinterlace/algo_x.c     |   8 +-
 modules/video_filter/deinterlace/algo_x.h     |   2 +-
 modules/video_filter/deinterlace/algo_yadif.c |  31 +-
 modules/video_filter/deinterlace/algo_yadif.h |   5 +-
 .../video_filter/deinterlace/deinterlace.c    |  66 +--
 .../video_filter/deinterlace/deinterlace.h    |   5 +
 modules/video_filter/deinterlace/helpers.c    |   1 -
 modules/video_filter/deinterlace/merge.c      | 150 +-----
 modules/video_filter/deinterlace/merge.h      |  83 +--
 src/libvlccore.sym                            |   2 +
 src/misc/cpu.c                                |  40 +-
 src/misc/picture.c                            |   8 +-
 test/Makefile.am                              |  25 +-
 test/bench_asm/bench_asm.h                    |  30 ++
 test/bench_asm/deinterlacing.c                | 126 +++++
 test/bench_asm/main.c                         |  94 ++++
 test/bench_asm/startcode_annexb.c             |  67 +++
 test/modules/packetizer/helpers.c             |  29 +-
 test/modules/video_filter/deinterlace.c       | 187 +++++++
 45 files changed, 1748 insertions(+), 734 deletions(-)
 create mode 100644 modules/packetizer/startcode.asm
 create mode 100644 modules/video_filter/deinterlace/algo_basic_x86.asm
 create mode 100644 test/bench_asm/bench_asm.h
 create mode 100644 test/bench_asm/deinterlacing.c
 create mode 100644 test/bench_asm/main.c
 create mode 100644 test/bench_asm/startcode_annexb.c
 create mode 100644 test/modules/video_filter/deinterlace.c

-- 
2.24.1



More information about the vlc-devel mailing list