James Darnley
073ec3b9da
avfilter/bwdif: add avx2 filter_line function
...
8-bit:
2.24x faster (1925±1.3 vs. 859±2.2 decicycles) compared with ssse3
10-bit:
2.00x faster (1703±1.7 vs. 853±2.0 decicycles) compared with ssse3
2023-03-25 02:38:17 +01:00
James Darnley
a937723ca9
tests: add bwdif to fate filter tests
2023-03-25 02:38:17 +01:00
James Darnley
087faf8cac
checkasm: add test for bwdif
2023-03-25 02:38:17 +01:00
James Darnley
b503b5a0cf
avfilter/bwdif: move filter_line init to a dedicated function
2023-03-25 02:38:17 +01:00
James Darnley
e50a02b0f6
tests: actually test yadif's 10 and 16-bit functions
2023-03-06 21:41:24 +01:00
James Darnley
eef763c705
checkasm/v210dec: add extra space to the destination arrays
2022-12-21 00:36:49 +01:00
James Darnley
6af453ca38
avcodec/x86: add avx512icl function for v210dec
...
Ice Lake (Xeon Silver 4316): 2.01x faster (1147±36.8 vs. 571±38.2 decicycles) compared with avx2
2022-12-20 15:02:45 +01:00
James Darnley
f30b4c2f47
avcodec/x86/v210: add some comments to the improved avx2 function
2022-12-20 15:02:45 +01:00
James Darnley
f1f41d6ff5
configure: support lsan as toolchain
2022-12-20 15:02:45 +01:00
James Darnley
5dfb4f9690
avcodec/x86/v210enc: change '0b' binary constant prefix to 'b' suffix
...
For compatability with yasm from 0.7.0
2022-12-03 16:44:24 +01:00
James Darnley
690b7890f0
avcodec/x86/v210enc: remove unneeded instruction
2022-12-01 18:19:03 +01:00
James Darnley
c67a2b14a2
avcodec/x86/v210enc: expand and correct comments
2022-12-01 18:19:03 +01:00
James Darnley
651cb867b1
avcodec/v210enc: add new 10-bit function for avx512 avx512icl
...
avx512 on Skylake-X (Xeon D-2123IT):
1.19x faster (970±91.2 vs. 817±104.4 decicycles) compared with avx2
avx512icl on Ice Lake (Xeon Silver 4316):
2.52x faster (1350±5.3 vs. 535±9.5 decicycles) compared with avx2
2022-12-01 18:19:03 +01:00
James Darnley
bda53d2dde
avcodec/x86/v210enc: replace register use with named register
2022-12-01 18:19:03 +01:00
James Darnley
cfd1c3c0a1
checkasm/v210enc: test the entire width of 10-bit planar input arrays
2022-12-01 18:19:03 +01:00
James Darnley
c3d36e1b3d
avcodec/v210enc: add new function for avx2 avx512 avx512icl
...
Negligible speed difference for avx2 on Zen 2 (Ryzen 5700X) and
Broadwell (Xeon E5-2620 v4):
1690±4.3 decicycles vs. 1693±78.4
1439±31.1 decicycles vs 1429±16.7
Moderate speedup with avx512 on Skylake-X (Xeon D-2123IT):
1.22x faster (793±0.8 vs. 649±5.5 decicycles) compared with avx2
Better speedup with avx512icl on Ice Lake (Xeon Silver 4316):
1.77x faster (784±1.8 vs. 442±11.6 decicycles) compared with avx2
Co-authors:
Henrik Gramner <henrik@gramner.com >
Kieran Kunhya <kierank@obe.tv >
2022-11-04 19:37:46 +01:00
James Darnley
1936c06f02
checkasm: add a verbose check function for uint32_t data
2022-11-04 19:37:46 +01:00
James Darnley
0f252dfa95
avutil/tests/cpu: print the avx512icl flag
2022-11-04 19:37:46 +01:00
James Darnley
f53c590f3d
mailmap: stop git lying about who I commit things as
2022-11-04 19:37:46 +01:00
James Darnley
46f1718cd9
avcodec/x86/v210: fix operands of vpblendd used in new avx2 code
...
Assembly failed when using yasm rather than nasm.
2019-05-02 21:20:54 +02:00
James Darnley
76c370af64
checkasm: add test for v210dec
2019-05-02 19:21:37 +02:00
James Darnley
e2cbf24f27
avcodec/v210dec: move DSP function setting into dedicated function
...
Prepare for checkasm test.
2019-05-02 19:21:37 +02:00
James Darnley
40d4b13228
checkasm: support for AVX-512 functions
2017-12-24 22:02:41 +01:00
James Darnley
8f86e66238
avcodec: add stride alignment needed for AVX-512
2017-12-24 22:02:41 +01:00
James Darnley
e2218ed8ce
avutil: add alignment needed for AVX-512
2017-12-24 22:02:41 +01:00
James Darnley
4783a01c11
avutil: detect when AVX-512 is available
2017-12-24 22:02:41 +01:00
James Darnley
8b81eabe57
avutil: add AVX-512 flags
2017-12-24 22:02:41 +01:00
James Darnley
b7a3d1f249
configure: test whether x86 assembler supports AVX-512
2017-12-24 22:02:41 +01:00
James Darnley
0c2acccd4b
avcodec/x86: use new x86-64 functions for -idct simple
...
They now match according to FATE, barring any further bugs with untested
parts
2017-06-28 17:27:35 +02:00
James Darnley
d7246ea9f2
avcodec/x86: add an 8-bit simple IDCT function based on the x86-64 high depth functions
...
Includes add/put functions
Rounding contributed by Ronald S. Bultje
2017-06-28 17:27:35 +02:00
James Darnley
8b19467d07
avcodec/x86: allow future 8-bit simple idct to have "DC only hack"
...
Created by Ronald S. Bultje
2017-06-28 17:27:35 +02:00
James Darnley
8221c71703
avcodec/x86: allow future 8-bit simple idct to use slightly different coefficients
2017-06-20 16:12:25 +02:00
James Darnley
9d11fedd11
avcodec/mdec: override IDCT choice before initing DSP structs
2017-06-20 13:59:51 +02:00
James Darnley
d2597fb0c1
avcodec/x86: modify simple_idct10 macros to add an action paramter
2017-06-20 13:35:01 +02:00
James Darnley
8781330d80
avcodec/x86: cleanup simple_idct10
...
Use named arguments for the functions so we can remove a define. The
stride/linesize argument is now ptrdiff_t type so we no longer need to
sign extend the register.
2017-06-20 13:34:38 +02:00
James Darnley
e3db94302c
avcodec/x86/mpegenc: support transpose permuation type
2017-06-20 12:12:13 +02:00
James Darnley
fa30a0a548
avcodec/x86/mpegenc: check IDCT permutation type is a valid value
2017-06-20 12:12:13 +02:00
James Darnley
0dea0114fb
avcodec/x86/idctdsp_init: reindent
2017-05-30 13:20:44 +02:00
James Darnley
8e89f6fd37
avcodec/x86: move simple_idct to external assembly
2017-05-30 13:20:42 +02:00
James Darnley
7aa90b4e94
avcodec/h264: add sse2 versions of previous idct functions
...
Kaby Lake Pentium:
- ff_h264_idct_add_8_sse2: ~1.18x faster than mmxext
- ff_h264_idct_dc_add_8_sse2: ~1.07x faster than mmxext
2017-05-15 15:00:20 +02:00
James Darnley
27460dfebc
avcodec/h264: add avx 8-bit h264_idct_dc_add
...
Haswell:
- 1.02x faster (405±0.7 vs. 397±0.8 decicycles) compared with mmxext
Skylake-U:
- 1.06x faster (498±1.8 vs. 470±1.3 decicycles) compared with mmxext
2017-05-15 15:00:19 +02:00
James Darnley
f61d454ca1
avcodec/h264: add avx 8-bit h264_idct_add
...
Haswell:
- 1.11x faster (522±0.4 vs. 469±1.8 decicycles) compared with mmxext
Skylake-U:
- 1.21x faster (671±5.5 vs. 555±1.4 decicycles) compared with mmxext
2017-05-15 15:00:17 +02:00
James Darnley
b5325c6711
avcodec/h264: use some 3 operand forms
2017-05-15 15:00:16 +02:00
James Darnley
060ba9e5e3
avcodec/h264: change RETs into REP_RETs where appropriate
2017-05-15 15:00:15 +02:00
James Darnley
33de0fee2c
avcodec/h264: enable sse2 chroma deblock/loop filter functions
...
Between 1.00 and 1.16 times faster on Intel Yorkfield Core 2 Quad.
Between 1.11 and 1.39 times faster on Intel Kaby Lake Pentium.
2017-02-27 13:22:06 +01:00
James Darnley
cd893b9307
avcodec/h264: add avx 8-bit 4:2:2 chroma h intra deblock/loop filter
...
~1.37x faster (147 vs. 108 cycles) compared to mmxext function
2017-02-27 13:22:06 +01:00
James Darnley
0e16b3e2be
avcodec/h264: add avx 8-bit 4:2:0 chroma h intra deblock/loop filter
...
~1.10x faster (69 vs. 63 cycles) compared to mmxext function
2017-02-27 13:22:06 +01:00
James Darnley
987ffe4b8d
avcodec/h264: add avx 8-bit chroma v intra deblock/loop filter
...
~1.14x faster (90 vs 78 cycles) compared with mmxext
2017-02-27 13:22:06 +01:00
James Darnley
88307b3eec
avcodec/h264: add avx 8-bit 4:2:2 chroma h deblock/loop filter
...
~1.21x faster (68 vs. 56 cycles) compared with mmxext function
2017-02-27 13:22:06 +01:00
James Darnley
ac096fc82d
avcodec/h264: add avx 8-bit 4:2:0 chroma h deblock/loop filter
...
~1.14x faster (93 vs. 81 cycles) compared with mmxext function
2017-02-27 13:22:06 +01:00
James Darnley
5c56758843
avcodec/h264: add avx 8-bit chroma v deblock/loop filter
...
~1.24x faster (101 vs. 81 cycles) compared with mmxext function
2017-02-27 13:22:06 +01:00
James Darnley
5336887867
avcodec/h264: sse2, avx h luma mbaff deblock/loop filter
...
x86-64 only
Yorkfield:
- sse2: ~2.17x (434 vs. 200 cycles)
Nehalem:
- sse2: ~2.94x (409 vs. 139 cycles)
Skylake:
- sse2: ~3.10x (370 vs. 119 cycles)
- avx: ~3.29x (370 vs. 112 cycles)
2017-02-18 20:26:52 +01:00
James Darnley
7627df15d4
x86util: import MOVHL macro
...
Originally committed to x264 in 1637239a by Henrik Gramner who has
agreed to re-license it as LGPL. Original commit message follows.
x86: Avoid some bypass delays and false dependencies
A bypass delay of 1-3 clock cycles may occur on some CPUs when transitioning
between int and float domains, so try to avoid that if possible.
2017-02-18 20:26:51 +01:00
James Darnley
e18bc2114f
avcodec/h264: add named parameters to x86 function
2017-02-18 20:26:50 +01:00
James Darnley
9d815b7424
avcodec/x86: deduplicate PASS8ROWS macro
2017-02-18 20:26:49 +01:00
James Darnley
acdd2d805d
avcodec/h264: resolve assert being triggered when stack is not aligned
...
32-bit msvc.
2016-12-07 22:32:19 +01:00
James Darnley
728651df06
avcodec/h264: mmx2, sse2, avx 10-bit 4:2:2 h chroma deblock/loop filter
...
Yorkfield:
- mmx2: 2.53x (504 vs. 199 cycles)
- sse2: 3.83x (504 vs. 131 cycles)
Nehalem:
- mmx2: 2.42x (365 vs. 151 cycles)
- sse2: 3.56x (365 vs. 103 cycles)
Skylake:
- mmx2: 1.81x (308 vs. 170 cycles)
- sse2: 2.84x (308 vs. 108 cycles)
- avx: 2.93x (308 vs. 105 cycles)
2016-12-07 00:29:13 +01:00
James Darnley
add21d0bb3
avcodec/h264: mmx2, sse2, avx 10-bit h chroma deblock/loop filter
...
Yorkfield:
- mmx2: 2.45x (279 vs. 114 cycles)
- sse2: 3.36x (279 vs. 83 cycles)
Nehalem:
- mmx2: 2.10x (192 vs. 92 cycles)
- sse2: 2.84x (192 vs. 68 cycles)
Skylake:
- mmx2: 1.75x (170 vs. 97 cycles)
- sse2: 2.47x (170 vs. 69 cycles)
- avx: 2.47x (170 vs. 69 cycles)
2016-12-07 00:29:13 +01:00
James Darnley
58ca2ef62e
whitespace changes after last commit
2016-12-07 00:29:13 +01:00
James Darnley
f33714a694
avcodec/h264: clean up and expand x86 function definitions
2016-12-07 00:29:13 +01:00
James Darnley
13d71c28cc
avcodec/h264: sse2 and avx 4:2:2 idct add8 10-bit functions
...
Yorkfield:
- sse2:
- complex: 4.13x faster (1514 vs. 367 cycles)
- simple: 4.38x faster (1836 vs. 419 cycles)
Skylake:
- sse2:
- complex: 3.61x faster ( 936 vs. 260 cycles)
- simple: 3.97x faster (1126 vs. 284 cycles)
- avx (versus sse2):
- complex: 1.07x faster (260 vs. 244 cycles)
- simple: 1.03x faster (284 vs. 274 cycles)
2016-11-30 22:58:28 +01:00
James Darnley
1dae7ffa0b
avcodec/h264: mmx 4:2:2 idct add8 function
...
2.87 times faster (1830 vs. 638 cycles)
2016-11-30 22:58:27 +01:00
James Darnley
815ea8c6cc
avcodec/h264: mmxext 4:2:2 chroma intra deblock/loop filter
...
2.1 times faster (401 vs. 194 cycles)
2016-11-30 22:58:27 +01:00