FFmpeg
Loading...
Searching...
No Matches
checkasm.c
Go to the documentation of this file.
1/*
2 * Assembly testing and benchmarking tool
3 * Copyright (c) 2025 Niklas Haas
4 * Copyright (c) 2015 Henrik Gramner
5 * Copyright (c) 2008 Loren Merritt
6 *
7 * This file is part of FFmpeg.
8 *
9 * FFmpeg is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * FFmpeg is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 *
23 * Copyright © 2018, VideoLAN and dav1d authors
24 * Copyright © 2018, Two Orioles, LLC
25 * All rights reserved.
26 *
27 * Redistribution and use in source and binary forms, with or without
28 * modification, are permitted provided that the following conditions are met:
29 *
30 * 1. Redistributions of source code must retain the above copyright notice, this
31 * list of conditions and the following disclaimer.
32 *
33 * 2. Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
38 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
39 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
41 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
42 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
45 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47 */
48
49#include "config.h"
50#include "config_components.h"
51
52#include <checkasm/checkasm.h>
53
54#include "checkasm.h"
55
56/* List of tests to invoke */
57static const CheckasmTest tests[] = {
58 /* NOTE: When adding a new test to this list here, it also needs to be
59 * added in tests/fate/checkasm.mak, otherwise it doesn't get executed
60 * as part of "make fate" or "make fate-checkasm". */
61#if CONFIG_AVCODEC
62 #if CONFIG_AAC_DECODER
63 { "aacpsdsp", checkasm_check_aacpsdsp },
64 { "sbrdsp", checkasm_check_sbrdsp },
65 #endif
66 #if CONFIG_AAC_ENCODER
67 { "aacencdsp", checkasm_check_aacencdsp },
68 #endif
69 #if CONFIG_AC3DSP
70 { "ac3dsp", checkasm_check_ac3dsp },
71 #endif
72 #if CONFIG_ALAC_DECODER
73 { "alacdsp", checkasm_check_alacdsp },
74 #endif
75 #if CONFIG_APV_DECODER
76 { "apv_dsp", checkasm_check_apv_dsp },
77 #endif
78 #if CONFIG_AUDIODSP
79 { "audiodsp", checkasm_check_audiodsp },
80 #endif
81 #if CONFIG_BITPACKED_DECODER
82 { "bitpackeddec", checkasm_check_bitpackeddec },
83 #endif
84 #if CONFIG_BLOCKDSP
85 { "blockdsp", checkasm_check_blockdsp },
86 #endif
87 #if CONFIG_BSWAPDSP
88 { "bswapdsp", checkasm_check_bswapdsp },
89 #endif
90 #if CONFIG_CAVS_DECODER
91 { "cavsdsp", checkasm_check_cavsdsp },
92 #endif
93 #if CONFIG_DCA_DECODER
94 { "dcadsp", checkasm_check_dcadsp },
95 { "synth_filter", checkasm_check_synth_filter },
96 #endif
97 #if CONFIG_DIRAC_DECODER
98 { "diracdsp", checkasm_check_diracdsp },
99 #endif
100 #if CONFIG_EXR_DECODER
101 { "exrdsp", checkasm_check_exrdsp },
102 #endif
103 #if CONFIG_FDCTDSP
104 { "fdctdsp", checkasm_check_fdctdsp },
105 #endif
106 #if CONFIG_FLAC_DECODER
107 { "flacdsp", checkasm_check_flacdsp },
108 #endif
109 #if CONFIG_G722DSP
110 { "g722dsp", checkasm_check_g722dsp },
111 #endif
112 #if CONFIG_H263DSP
113 { "h263dsp", checkasm_check_h263dsp },
114 #endif
115 #if CONFIG_H264CHROMA
116 { "h264chroma", checkasm_check_h264chroma },
117 #endif
118 #if CONFIG_H264DSP
119 { "h264dsp", checkasm_check_h264dsp },
120 #endif
121 #if CONFIG_H264PRED
122 { "h264pred", checkasm_check_h264pred },
123 #endif
124 #if CONFIG_H264QPEL
125 { "h264qpel", checkasm_check_h264qpel },
126 #endif
127 #if CONFIG_HEVC_DECODER
128 { "hevc_add_res", checkasm_check_hevc_add_res },
129 { "hevc_deblock", checkasm_check_hevc_deblock },
130 { "hevc_dequant", checkasm_check_hevc_dequant },
131 { "hevc_idct", checkasm_check_hevc_idct },
132 { "hevc_pel", checkasm_check_hevc_pel },
133 { "hevc_pred", checkasm_check_hevc_pred },
134 { "hevc_sao", checkasm_check_hevc_sao },
135 #endif
136 #if CONFIG_HPELDSP
137 { "hpeldsp", checkasm_check_hpeldsp },
138 #endif
139 #if CONFIG_HUFFYUVDSP
140 { "huffyuvdsp", checkasm_check_huffyuvdsp },
141 #endif
142 #if CONFIG_HUFFYUVENCDSP
143 { "huffyuvencdsp", checkasm_check_huffyuvencdsp },
144 #endif
145 #if CONFIG_IDCTDSP
146 { "idctdsp", checkasm_check_idctdsp },
147 #endif
148 #if CONFIG_JPEG2000_DECODER
149 { "jpeg2000dsp", checkasm_check_jpeg2000dsp },
150 #endif
151 #if CONFIG_LLAUDDSP
152 { "llauddsp", checkasm_check_llauddsp },
153 #endif
154 #if CONFIG_HUFFYUVDSP
155 { "llviddsp", checkasm_check_llviddsp },
156 #endif
157 #if CONFIG_LLVIDENCDSP
158 { "llvidencdsp", checkasm_check_llvidencdsp },
159 #endif
160 #if CONFIG_LPC
161 { "lpc", checkasm_check_lpc },
162 #endif
163 #if CONFIG_ME_CMP
164 { "motion", checkasm_check_motion },
165 #endif
166 #if CONFIG_MPEG4_DECODER
167 { "mpeg4videodsp", checkasm_check_mpeg4videodsp },
168 #endif
169 #if CONFIG_MPEGVIDEO
170 { "mpegvideo_unquantize", checkasm_check_mpegvideo_unquantize },
171 #endif
172 #if CONFIG_MPEGVIDEOENCDSP
173 { "mpegvideoencdsp", checkasm_check_mpegvideoencdsp },
174 #endif
175 #if CONFIG_OPUS_DECODER
176 { "opusdsp", checkasm_check_opusdsp },
177 #endif
178 #if CONFIG_PIXBLOCKDSP
179 { "pixblockdsp", checkasm_check_pixblockdsp },
180 #endif
181 #if CONFIG_PNG_DECODER
182 { "png", checkasm_check_png },
183 #endif
184 #if CONFIG_PRORES_DECODER
185 { "proresdsp", checkasm_check_proresdsp },
186 #endif
187 #if CONFIG_QPELDSP
188 { "qpeldsp", checkasm_check_qpeldsp },
189 #endif
190 #if CONFIG_RV34DSP
191 { "rv34dsp", checkasm_check_rv34dsp },
192 #endif
193 #if CONFIG_RV40_DECODER
194 { "rv40dsp", checkasm_check_rv40dsp },
195 #endif
196 #if CONFIG_SBC_ENCODER
197 { "sbcdsp", checkasm_check_sbcdsp },
198 #endif
199 #if CONFIG_SNOW_DECODER
200 { "snowdsp", checkasm_check_snowdsp },
201 #endif
202 #if CONFIG_SVQ1_ENCODER
203 { "svq1enc", checkasm_check_svq1enc },
204 #endif
205 #if CONFIG_TAK_DECODER
206 { "takdsp", checkasm_check_takdsp },
207 #endif
208 #if CONFIG_TTA_DECODER
209 { "ttadsp", checkasm_check_ttadsp },
210 #endif
211 #if CONFIG_TTA_ENCODER
212 { "ttaencdsp", checkasm_check_ttaencdsp },
213 #endif
214 #if CONFIG_UTVIDEO_DECODER
215 { "utvideodsp", checkasm_check_utvideodsp },
216 #endif
217 #if CONFIG_V210_DECODER
218 { "v210dec", checkasm_check_v210dec },
219 #endif
220 #if CONFIG_V210_ENCODER
221 { "v210enc", checkasm_check_v210enc },
222 #endif
223 #if CONFIG_VC1DSP
224 { "vc1dsp", checkasm_check_vc1dsp },
225 #endif
226 #if CONFIG_VP3DSP
227 { "vp3dsp", checkasm_check_vp3dsp },
228 #endif
229 #if CONFIG_VP6_DECODER
230 { "vp6dsp", checkasm_check_vp6dsp },
231 #endif
232 #if CONFIG_VP8DSP
233 { "vp8dsp", checkasm_check_vp8dsp },
234 #endif
235 #if CONFIG_VP9_DECODER
236 { "vp9dsp", checkasm_check_vp9dsp },
237 #endif
238 #if CONFIG_VIDEODSP
239 { "videodsp", checkasm_check_videodsp },
240 #endif
241 #if CONFIG_VORBIS_DECODER
242 { "vorbisdsp", checkasm_check_vorbisdsp },
243 #endif
244 #if CONFIG_VVC_DECODER
245 { "vvc_alf", checkasm_check_vvc_alf },
246 { "vvc_mc", checkasm_check_vvc_mc },
247 { "vvc_pred", checkasm_check_vvc_pred },
248 { "vvc_sao", checkasm_check_vvc_sao },
249 #endif
250#endif
251#if CONFIG_AVFILTER
252 #if CONFIG_SCENE_SAD
253 { "scene_sad", checkasm_check_scene_sad },
254 #endif
255 #if CONFIG_AFIR_FILTER
256 { "af_afir", checkasm_check_afir },
257 #endif
258 #if CONFIG_BLACKDETECT_FILTER
259 { "vf_blackdetect", checkasm_check_blackdetect },
260 #endif
261 #if CONFIG_BLEND_FILTER
262 { "vf_blend", checkasm_check_blend },
263 #endif
264 #if CONFIG_BWDIF_FILTER
265 { "vf_bwdif", checkasm_check_vf_bwdif },
266 #endif
267 #if CONFIG_COLORDETECT_FILTER
268 { "vf_colordetect", checkasm_check_colordetect },
269 #endif
270 #if CONFIG_COLORSPACE_FILTER
271 { "vf_colorspace", checkasm_check_colorspace },
272 #endif
273 #if CONFIG_EQ_FILTER
274 { "vf_eq", checkasm_check_vf_eq },
275 #endif
276 #if CONFIG_FSPP_FILTER
277 { "vf_fspp", checkasm_check_vf_fspp },
278 #endif
279 #if CONFIG_GBLUR_FILTER
280 { "vf_gblur", checkasm_check_vf_gblur },
281 #endif
282 #if CONFIG_HFLIP_FILTER
283 { "vf_hflip", checkasm_check_vf_hflip },
284 #endif
285 #if CONFIG_IDET_FILTER
286 { "vf_idet", checkasm_check_idet },
287 #endif
288 #if CONFIG_NLMEANS_FILTER
289 { "vf_nlmeans", checkasm_check_nlmeans },
290 #endif
291 #if CONFIG_LIMITER_FILTER
292 { "vf_limiter", checkasm_check_vf_limiter },
293 #endif
294 #if CONFIG_PP7_FILTER
295 { "vf_pp7", checkasm_check_vf_pp7 },
296 #endif
297 #if CONFIG_THRESHOLD_FILTER
298 { "vf_threshold", checkasm_check_vf_threshold },
299 #endif
300 #if CONFIG_SOBEL_FILTER
301 { "vf_sobel", checkasm_check_vf_sobel },
302 #endif
303#endif
304#if CONFIG_SWSCALE
305 { "sw_gbrp", checkasm_check_sw_gbrp },
306 { "sw_range_convert", checkasm_check_sw_range_convert },
307 { "sw_rgb", checkasm_check_sw_rgb },
308 { "sw_scale", checkasm_check_sw_scale },
309 { "sw_xyz2rgb", checkasm_check_sw_xyz2rgb },
310 { "sw_yuv2rgb", checkasm_check_sw_yuv2rgb },
311 { "sw_yuv2yuv", checkasm_check_sw_yuv2yuv },
312 { "sw_ops", checkasm_check_sw_ops },
313#endif
314#if CONFIG_AVUTIL
315 { "aes", checkasm_check_aes },
316 { "base64", checkasm_check_base64 },
317 { "crc", checkasm_check_crc, .uninit = checkasm_uninit_crc },
318 { "fixed_dsp", checkasm_check_fixed_dsp },
319 { "float_dsp", checkasm_check_float_dsp },
320 { "lls", checkasm_check_lls },
321#if CONFIG_PIXELUTILS
322 { "pixelutils",checkasm_check_pixelutils },
323#endif
324 { "av_tx", checkasm_check_av_tx, .uninit = checkasm_uninit_tx },
325#endif
326 { NULL }
327 /* NOTE: When adding a new test to this list here, it also needs to be
328 * added in tests/fate/checkasm.mak, otherwise it doesn't get executed
329 * as part of "make fate" or "make fate-checkasm". */
330};
331
332/* List of cpu flags to check */
333static const CheckasmCpuInfo cpuflags[] = {
334#if ARCH_AARCH64
335 { "ARMV8", "armv8", AV_CPU_FLAG_ARMV8 },
336 { "NEON", "neon", AV_CPU_FLAG_NEON },
337 { "DOTPROD", "dotprod", AV_CPU_FLAG_DOTPROD },
338 { "I8MM", "i8mm", AV_CPU_FLAG_I8MM },
339 { "SVE", "sve", AV_CPU_FLAG_SVE },
340 { "SVE2", "sve2", AV_CPU_FLAG_SVE2 },
341 { "SME", "sme", AV_CPU_FLAG_SME },
342 { "SME-I16I64", "sme_i16i64", AV_CPU_FLAG_SME_I16I64 },
343 { "CRC", "crc", AV_CPU_FLAG_ARM_CRC },
344 { "SME2", "sme2", AV_CPU_FLAG_SME2 },
345 { "PMULL", "pmull_eor3", AV_CPU_FLAG_PMULL|AV_CPU_FLAG_EOR3, .mask = AV_CPU_FLAG_ARM_CRC },
346 { "PMULL+CRC","pmull_eor3_crc", AV_CPU_FLAG_PMULL|AV_CPU_FLAG_EOR3|AV_CPU_FLAG_ARM_CRC },
347 { "AES", "aes", AV_CPU_FLAG_ARM_AES },
348#elif ARCH_ARM
349 { "ARMV5TE", "armv5te", AV_CPU_FLAG_ARMV5TE },
350 { "ARMV6", "armv6", AV_CPU_FLAG_ARMV6 },
351 { "ARMV6T2", "armv6t2", AV_CPU_FLAG_ARMV6T2 },
352 { "VFP", "vfp", AV_CPU_FLAG_VFP },
353 { "VFP_VM", "vfp_vm", AV_CPU_FLAG_VFP_VM },
354 { "VFPV3", "vfp3", AV_CPU_FLAG_VFPV3 },
355 { "NEON", "neon", AV_CPU_FLAG_NEON },
356#elif ARCH_PPC
357 { "ALTIVEC", "altivec", AV_CPU_FLAG_ALTIVEC },
358 { "VSX", "vsx", AV_CPU_FLAG_VSX },
359 { "POWER8", "power8", AV_CPU_FLAG_POWER8 },
360#elif ARCH_RISCV
361 { "RVI", "rvi", AV_CPU_FLAG_RVI },
362 { "misaligned", "misaligned", AV_CPU_FLAG_RV_MISALIGNED },
363 { "RV_zbb", "rvb_b", AV_CPU_FLAG_RVB_BASIC },
364 { "RVB", "rvb", AV_CPU_FLAG_RVB },
365 { "RV_zve32x","rvv_i32", AV_CPU_FLAG_RVV_I32 },
366 { "RV_zve32f","rvv_f32", AV_CPU_FLAG_RVV_F32 },
367 { "RV_zve64x","rvv_i64", AV_CPU_FLAG_RVV_I64 },
368 { "RV_zve64d","rvv_f64", AV_CPU_FLAG_RVV_F64 },
369 { "RV_zvbb", "rv_zvbb", AV_CPU_FLAG_RV_ZVBB },
370#elif ARCH_MIPS
371 { "MMI", "mmi", AV_CPU_FLAG_MMI },
372 { "MSA", "msa", AV_CPU_FLAG_MSA },
373#elif ARCH_X86
374 { "MMX", "mmx", AV_CPU_FLAG_MMX|AV_CPU_FLAG_CMOV },
375 { "MMXEXT", "mmxext", AV_CPU_FLAG_MMXEXT },
376 { "SSE", "sse", AV_CPU_FLAG_SSE },
377 { "SSE2", "sse2", AV_CPU_FLAG_SSE2|AV_CPU_FLAG_SSE2SLOW },
378 { "SSE3", "sse3", AV_CPU_FLAG_SSE3|AV_CPU_FLAG_SSE3SLOW },
379 { "SSSE3", "ssse3", AV_CPU_FLAG_SSSE3|AV_CPU_FLAG_ATOM },
380 { "SSE4.1", "sse4", AV_CPU_FLAG_SSE4 },
381 { "SSE4.2", "sse42", AV_CPU_FLAG_SSE42 },
382 { "AES-NI", "aesni", AV_CPU_FLAG_AESNI },
383 { "CLMUL", "clmul", AV_CPU_FLAG_CLMUL },
384 { "AVX", "avx", AV_CPU_FLAG_AVX|AV_CPU_FLAG_AVXSLOW },
385 { "XOP", "xop", AV_CPU_FLAG_XOP },
386 { "FMA3", "fma3", AV_CPU_FLAG_FMA3 },
387 { "FMA4", "fma4", AV_CPU_FLAG_FMA4 },
388 { "AVX2", "avx2", AV_CPU_FLAG_AVX2 },
389 { "AVX-512", "avx512", AV_CPU_FLAG_AVX512 },
390 { "AVX-512ICL", "avx512icl", AV_CPU_FLAG_AVX512ICL },
391#elif ARCH_LOONGARCH
392 { "LSX", "lsx", AV_CPU_FLAG_LSX },
393 { "LASX", "lasx", AV_CPU_FLAG_LASX },
394#elif ARCH_WASM
395 { "SIMD128", "simd128", AV_CPU_FLAG_SIMD128 },
396#endif
397 { NULL }
398};
399
400static int host_cpu_flags;
401
402static void set_cpu_flags(uint64_t flags)
403{
405}
406
407int main(int argc, const char *argv[])
408{
409 /* Include optional hints for reporting; set_cpu_flags() masks out hints
410 * absent from the host before DSP dispatch. AV_CPU_FLAG_AVXSLOW may alias
411 * a flag on another architecture, so keep it x86-only. */
412#if ARCH_X86
413 const int extra_flags = AV_CPU_FLAG_AVXSLOW;
414#else
415 const int extra_flags = 0;
416#endif
417
419
421 .cpu_flags = cpuflags,
422 .tests = tests,
423 .set_cpu_flags = set_cpu_flags,
424 .cpu = host_cpu_flags | extra_flags,
425 };
426
427 return checkasm_main(&cfg, argc, argv);
428}
void checkasm_check_aacpsdsp(void)
Definition aacpsdsp.c:236
void checkasm_uninit_tx(void)
Definition av_tx.c:49
void checkasm_check_av_tx(void)
Definition av_tx.c:101
void checkasm_check_bitpackeddec(void)
#define flags(name, subs,...)
Definition cbs_h264.c:74
static const CheckasmCpuInfo cpuflags[]
Definition checkasm.c:333
static void set_cpu_flags(uint64_t flags)
Definition checkasm.c:402
static int host_cpu_flags
Definition checkasm.c:400
void checkasm_check_mpegvideo_unquantize(void)
void checkasm_check_qpeldsp(void)
Definition qpeldsp.c:53
void checkasm_check_h264dsp(void)
Definition h264dsp.c:695
void checkasm_check_huffyuvencdsp(void)
void checkasm_check_opusdsp(void)
Definition opusdsp.c:88
void checkasm_check_hevc_sao(void)
Definition hevc_sao.c:136
void checkasm_check_sw_gbrp(void)
Definition sw_gbrp.c:398
void checkasm_check_hevc_idct(void)
Definition hevc_idct.c:108
void checkasm_check_rv40dsp(void)
Definition rv40dsp.c:71
void checkasm_check_hpeldsp(void)
Definition hpeldsp.c:54
void checkasm_check_huffyuvdsp(void)
Definition huffyuvdsp.c:137
void checkasm_check_sw_rgb(void)
Definition sw_rgb.c:809
void checkasm_check_llvidencdsp(void)
void checkasm_check_flacdsp(void)
Definition flacdsp.c:181
void checkasm_check_crc(void)
Definition crc.c:83
void checkasm_check_nlmeans(void)
Definition vf_nlmeans.c:36
void checkasm_check_mpeg4videodsp(void)
void checkasm_check_dcadsp(void)
Definition dcadsp.c:109
void checkasm_check_h264qpel(void)
Definition h264qpel.c:69
void checkasm_check_colorspace(void)
void checkasm_check_h263dsp(void)
Definition h263dsp.c:54
void checkasm_check_idet(void)
Definition vf_idet.c:58
void checkasm_check_blend(void)
Definition vf_blend.c:89
void checkasm_check_pixblockdsp(void)
Definition pixblockdsp.c:82
void checkasm_check_vf_sobel(void)
void checkasm_check_motion(void)
Definition motion.c:139
void checkasm_check_h264pred(void)
Definition h264pred.c:234
void checkasm_check_vp8dsp(void)
Definition vp8dsp.c:511
void checkasm_check_llviddsp(void)
Definition llviddsp.c:194
void checkasm_check_vf_pp7(void)
Definition vf_pp7.c:59
void checkasm_check_takdsp(void)
Definition takdsp.c:145
void checkasm_check_rv34dsp(void)
Definition rv34dsp.c:129
void checkasm_check_float_dsp(void)
Definition float_dsp.c:286
void checkasm_check_idctdsp(void)
Definition idctdsp.c:95
void checkasm_check_sbcdsp(void)
Definition sbcdsp.c:109
void checkasm_check_vf_limiter(void)
Definition vf_limiter.c:64
void checkasm_check_vf_fspp(void)
Definition vf_fspp.c:165
void checkasm_check_exrdsp(void)
Definition exrdsp.c:77
void checkasm_check_h264chroma(void)
Definition h264chroma.c:83
void checkasm_check_hevc_dequant(void)
void checkasm_check_g722dsp(void)
Definition g722dsp.c:53
void checkasm_check_sw_ops(void)
Definition sw_ops.c:690
void checkasm_check_v210dec(void)
Definition v210dec.c:47
void checkasm_check_ttaencdsp(void)
void checkasm_check_blackdetect(void)
void checkasm_check_vf_bwdif(void)
Definition vf_bwdif.c:72
void checkasm_check_ttadsp(void)
void checkasm_check_scene_sad(void)
Definition scene_sad.c:66
void checkasm_check_fixed_dsp(void)
Definition fixed_dsp.c:133
void checkasm_check_sw_range_convert(void)
void checkasm_check_vvc_sao(void)
Definition vvc_sao.c:134
void checkasm_check_hevc_pred(void)
Definition hevc_pred.c:302
void checkasm_check_diracdsp(void)
Definition diracdsp.c:88
void checkasm_check_lpc(void)
Definition lpc.c:96
void checkasm_check_jpeg2000dsp(void)
Definition jpeg2000dsp.c:92
void checkasm_check_sw_yuv2yuv(void)
Definition sw_yuv2yuv.c:130
void checkasm_check_vf_eq(void)
Definition vf_eq.c:76
void checkasm_check_llauddsp(void)
Definition llauddsp.c:108
void checkasm_check_vf_threshold(void)
void checkasm_check_svq1enc(void)
Definition svq1enc.c:63
void checkasm_check_sw_scale(void)
Definition sw_scale.c:610
void checkasm_check_vp9dsp(void)
Definition vp9dsp.c:627
void checkasm_check_utvideodsp(void)
Definition utvideodsp.c:90
void checkasm_check_v210enc(void)
Definition v210enc.c:83
void checkasm_check_vc1dsp(void)
Definition vc1dsp.c:518
void checkasm_check_hevc_deblock(void)
void checkasm_check_hevc_pel(void)
Definition hevc_pel.c:621
void checkasm_check_vvc_mc(void)
Definition vvc_mc.c:471
void checkasm_check_hevc_add_res(void)
void checkasm_check_mpegvideoencdsp(void)
void checkasm_check_vorbisdsp(void)
Definition vorbisdsp.c:67
void checkasm_check_proresdsp(void)
Definition proresdsp.c:69
void checkasm_check_colordetect(void)
void checkasm_check_vf_gblur(void)
Definition vf_gblur.c:82
void checkasm_check_synth_filter(void)
void checkasm_check_snowdsp(void)
Definition snowdsp.c:136
void checkasm_check_vvc_pred(void)
Definition vvc_pred.c:274
void checkasm_check_vp6dsp(void)
Definition vp6dsp.c:39
void checkasm_check_png(void)
Definition png.c:107
void checkasm_check_vp3dsp(void)
Definition vp3dsp.c:193
void checkasm_check_sw_yuv2rgb(void)
Definition sw_yuv2rgb.c:251
void checkasm_check_vvc_alf(void)
Definition vvc_alf.c:178
void checkasm_check_vf_hflip(void)
Definition vf_hflip.c:72
void checkasm_check_fdctdsp(void)
Definition fdctdsp.c:67
void checkasm_check_sbrdsp(void)
Definition sbrdsp.c:259
void checkasm_check_lls(void)
Definition lls.c:76
void checkasm_check_videodsp(void)
Definition videodsp.c:80
void checkasm_check_pixelutils(void)
Definition pixelutils.c:95
void checkasm_check_sw_xyz2rgb(void)
Definition sw_xyz2rgb.c:104
void checkasm_uninit_crc(void)
Definition crc.c:48
#define NULL
Definition coverity.c:32
int main
Definition dovi_rpuenc.c:38
CHECKASM_API int checkasm_main(CheckasmConfig *config, int argc, const char *argv[])
Main entry point for checkasm test programs.
Definition checkasm.c:1211
static CheckasmConfig cfg
Definition checkasm.c:74
const TestCase tests[]
Definition fifo_muxer.c:363
void av_force_cpu_flags(int arg)
Disables cpu detection and forces the specified flags.
Definition cpu.c:81
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Definition cpu.c:109
#define AV_CPU_FLAG_DOTPROD
Definition cpu.h:76
#define AV_CPU_FLAG_RVV_I64
Vectors of 64-bit int's *‍/.
Definition cpu.h:100
#define AV_CPU_FLAG_ARMV5TE
Definition cpu.h:68
#define AV_CPU_FLAG_FMA3
Haswell FMA3 functions.
Definition cpu.h:57
#define AV_CPU_FLAG_SSE2
PIV SSE2 functions.
Definition cpu.h:37
#define AV_CPU_FLAG_SVE
Definition cpu.h:78
#define AV_CPU_FLAG_RVI
I (full GPR bank)
Definition cpu.h:97
#define AV_CPU_FLAG_ARM_AES
Definition cpu.h:87
#define AV_CPU_FLAG_VFPV3
Definition cpu.h:72
#define AV_CPU_FLAG_LASX
Definition cpu.h:94
#define AV_CPU_FLAG_SSE3SLOW
SSE3 supported, but usually not faster than regular MMX/SSE (e.g.
Definition cpu.h:42
#define AV_CPU_FLAG_AVX512
AVX-512 functions: requires OS support even if YMM/ZMM registers aren't used.
Definition cpu.h:60
#define AV_CPU_FLAG_VFP
Definition cpu.h:71
#define AV_CPU_FLAG_SSE42
Nehalem SSE4.2 functions.
Definition cpu.h:48
#define AV_CPU_FLAG_NEON
Definition cpu.h:73
#define AV_CPU_FLAG_I8MM
Definition cpu.h:77
#define AV_CPU_FLAG_CMOV
supports cmov instruction
Definition cpu.h:55
#define AV_CPU_FLAG_SVE2
Definition cpu.h:79
#define AV_CPU_FLAG_SSE
SSE functions.
Definition cpu.h:36
#define AV_CPU_FLAG_RVB
B (bit manipulations)
Definition cpu.h:105
#define AV_CPU_FLAG_RVB_BASIC
Basic bit-manipulations.
Definition cpu.h:102
#define AV_CPU_FLAG_SSE4
Penryn SSE4.1 functions.
Definition cpu.h:47
#define AV_CPU_FLAG_FMA4
Bulldozer FMA4 functions.
Definition cpu.h:54
#define AV_CPU_FLAG_RVV_I32
Vectors of 8/16/32-bit int's *‍/.
Definition cpu.h:98
#define AV_CPU_FLAG_VSX
ISA 2.06.
Definition cpu.h:65
#define AV_CPU_FLAG_POWER8
ISA 2.07.
Definition cpu.h:66
#define AV_CPU_FLAG_SSE2SLOW
SSE2 supported, but usually not faster than regular MMX/SSE (e.g.
Definition cpu.h:38
#define AV_CPU_FLAG_MMXEXT
SSE integer functions or AMD MMX ext.
Definition cpu.h:33
#define AV_CPU_FLAG_SSE3
Prescott SSE3 functions.
Definition cpu.h:41
#define AV_CPU_FLAG_AESNI
Advanced Encryption Standard functions.
Definition cpu.h:49
#define AV_CPU_FLAG_LSX
Definition cpu.h:93
#define AV_CPU_FLAG_SME_I16I64
Definition cpu.h:83
#define AV_CPU_FLAG_ARMV6T2
Definition cpu.h:70
#define AV_CPU_FLAG_XOP
Bulldozer XOP functions.
Definition cpu.h:53
#define AV_CPU_FLAG_ALTIVEC
standard
Definition cpu.h:64
#define AV_CPU_FLAG_EOR3
Definition cpu.h:86
#define AV_CPU_FLAG_ATOM
Atom processor, some SSSE3 instructions are slower.
Definition cpu.h:46
#define AV_CPU_FLAG_VFP_VM
VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations.
Definition cpu.h:75
#define AV_CPU_FLAG_AVX2
AVX2 functions: requires OS support even if YMM registers aren't used.
Definition cpu.h:56
#define AV_CPU_FLAG_SME2
Definition cpu.h:82
#define AV_CPU_FLAG_SSSE3
Conroe SSSE3 functions.
Definition cpu.h:44
#define AV_CPU_FLAG_ARM_CRC
Definition cpu.h:81
#define AV_CPU_FLAG_AVX512ICL
F/CD/BW/DQ/VL/VNNI/IFMA/VBMI/VBMI2/VPOPCNTDQ/BITALG/GFNI/VAES/VPCLMULQDQ.
Definition cpu.h:61
#define AV_CPU_FLAG_CLMUL
Carry-less Multiplication instruction.
Definition cpu.h:50
#define AV_CPU_FLAG_ARMV8
Definition cpu.h:74
#define AV_CPU_FLAG_PMULL
Definition cpu.h:85
#define AV_CPU_FLAG_SIMD128
Definition cpu.h:108
#define AV_CPU_FLAG_MSA
Definition cpu.h:90
#define AV_CPU_FLAG_RV_ZVBB
Vector basic bit-manipulations.
Definition cpu.h:103
#define AV_CPU_FLAG_AVXSLOW
AVX supported, but slow when using YMM registers (e.g. Bulldozer)
Definition cpu.h:52
#define AV_CPU_FLAG_RVV_F32
Vectors of float's *‍/.
Definition cpu.h:99
#define AV_CPU_FLAG_ARMV6
Definition cpu.h:69
#define AV_CPU_FLAG_SME
Definition cpu.h:80
#define AV_CPU_FLAG_MMX
standard MMX
Definition cpu.h:32
#define AV_CPU_FLAG_MMI
Definition cpu.h:89
#define AV_CPU_FLAG_RVV_F64
Vectors of double's.
Definition cpu.h:101
#define AV_CPU_FLAG_AVX
AVX functions: requires OS support even if YMM registers aren't used.
Definition cpu.h:51
#define AV_CPU_FLAG_RV_MISALIGNED
Fast misaligned accesses.
Definition cpu.h:104
Configuration structure for the checkasm test suite.
Definition checkasm.h:182
Describes a CPU feature flag/capability.
Definition checkasm.h:105
Describes a single test function.
Definition checkasm.h:127
void checkasm_check_aacencdsp(void)
Definition aacencdsp.c:100
void checkasm_check_ac3dsp(void)
Definition ac3dsp.c:216
void checkasm_check_aes(void)
Definition aes.c:30
void checkasm_check_afir(void)
Definition af_afir.c:134
void checkasm_check_alacdsp(void)
Definition alacdsp.c:116
void checkasm_check_apv_dsp(void)
Definition apv_dsp.c:176
void checkasm_check_audiodsp(void)
Definition audiodsp.c:52
void checkasm_check_base64(void)
Definition base64.c:71
void checkasm_check_blockdsp(void)
Definition blockdsp.c:78
void checkasm_check_bswapdsp(void)
Definition bswapdsp.c:60
void checkasm_check_cavsdsp(void)
Definition cavsdsp.c:153