x86: add SSSE3 cdef filters implementation

AVX2 adaption

---------------------
x86_64:
------------------------------------------
cdef_filter_4x4_8bpc_c: 1370.2
cdef_filter_4x4_8bpc_ssse3: 142.3
cdef_filter_4x4_8bpc_avx2: 106.7
------------------------------------------
cdef_filter_4x8_8bpc_c: 2749.3
cdef_filter_4x8_8bpc_ssse3: 257.2
cdef_filter_4x8_8bpc_avx2: 178.8
------------------------------------------
cdef_filter_8x8_8bpc_c: 5609.5
cdef_filter_8x8_8bpc_ssse3: 438.1
cdef_filter_8x8_8bpc_avx2: 250.6
------------------------------------------

---------------------
x86_32:
------------------------------------------
cdef_filter_4x4_8bpc_c: 1548.7
cdef_filter_4x4_8bpc_ssse3: 179.8
------------------------------------------
cdef_filter_4x8_8bpc_c: 3128.2
cdef_filter_4x8_8bpc_ssse3: 328.1
------------------------------------------
cdef_filter_8x8_8bpc_c: 6454.5
cdef_filter_8x8_8bpc_ssse3: 584.4
------------------------------------------
parent 80650d4c
Pipeline #5058 passed with stages
in 7 minutes and 34 seconds
......@@ -119,6 +119,7 @@ if is_asm_enabled
# NASM source files
libdav1d_sources_asm = files(
'x86/cdef.asm',
'x86/cdef_ssse3.asm',
'x86/cpuid.asm',
'x86/ipred.asm',
'x86/itx.asm',
......
......@@ -29,14 +29,27 @@
#include "src/cdef.h"
decl_cdef_fn(dav1d_cdef_filter_8x8_avx2);
decl_cdef_fn(dav1d_cdef_filter_8x8_ssse3);
decl_cdef_fn(dav1d_cdef_filter_4x8_avx2);
decl_cdef_fn(dav1d_cdef_filter_4x8_ssse3);
decl_cdef_fn(dav1d_cdef_filter_4x4_avx2);
decl_cdef_fn(dav1d_cdef_filter_4x4_ssse3);
decl_cdef_dir_fn(dav1d_cdef_dir_avx2);
void bitfn(dav1d_cdef_dsp_init_x86)(Dav1dCdefDSPContext *const c) {
const unsigned flags = dav1d_get_cpu_flags();
if (!(flags & DAV1D_X86_CPU_FLAG_SSSE3)) return;
#if BITDEPTH ==8
c->fb[0] = dav1d_cdef_filter_8x8_ssse3;
c->fb[1] = dav1d_cdef_filter_4x8_ssse3;
c->fb[2] = dav1d_cdef_filter_4x4_ssse3;
#endif
if (!(flags & DAV1D_X86_CPU_FLAG_AVX2)) return;
#if BITDEPTH == 8 && ARCH_X86_64
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment