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_BLOCKDSP
82 { "blockdsp", checkasm_check_blockdsp },
83 #endif
84 #if CONFIG_BSWAPDSP
85 { "bswapdsp", checkasm_check_bswapdsp },
86 #endif
87 #if CONFIG_CAVS_DECODER
88 { "cavsdsp", checkasm_check_cavsdsp },
89 #endif
90 #if CONFIG_DCA_DECODER
91 { "dcadsp", checkasm_check_dcadsp },
92 { "synth_filter", checkasm_check_synth_filter },
93 #endif
94 #if CONFIG_DIRAC_DECODER
95 { "diracdsp", checkasm_check_diracdsp },
96 #endif
97 #if CONFIG_EXR_DECODER
98 { "exrdsp", checkasm_check_exrdsp },
99 #endif
100 #if CONFIG_FDCTDSP
101 { "fdctdsp", checkasm_check_fdctdsp },
102 #endif
103 #if CONFIG_FLAC_DECODER
104 { "flacdsp", checkasm_check_flacdsp },
105 #endif
106 #if CONFIG_G722DSP
107 { "g722dsp", checkasm_check_g722dsp },
108 #endif
109 #if CONFIG_H263DSP
110 { "h263dsp", checkasm_check_h263dsp },
111 #endif
112 #if CONFIG_H264CHROMA
113 { "h264chroma", checkasm_check_h264chroma },
114 #endif
115 #if CONFIG_H264DSP
116 { "h264dsp", checkasm_check_h264dsp },
117 #endif
118 #if CONFIG_H264PRED
119 { "h264pred", checkasm_check_h264pred },
120 #endif
121 #if CONFIG_H264QPEL
122 { "h264qpel", checkasm_check_h264qpel },
123 #endif
124 #if CONFIG_HEVC_DECODER
125 { "hevc_add_res", checkasm_check_hevc_add_res },
126 { "hevc_deblock", checkasm_check_hevc_deblock },
127 { "hevc_dequant", checkasm_check_hevc_dequant },
128 { "hevc_idct", checkasm_check_hevc_idct },
129 { "hevc_pel", checkasm_check_hevc_pel },
130 { "hevc_pred", checkasm_check_hevc_pred },
131 { "hevc_sao", checkasm_check_hevc_sao },
132 #endif
133 #if CONFIG_HPELDSP
134 { "hpeldsp", checkasm_check_hpeldsp },
135 #endif
136 #if CONFIG_HUFFYUVDSP
137 { "huffyuvdsp", checkasm_check_huffyuvdsp },
138 #endif
139 #if CONFIG_HUFFYUVENCDSP
140 { "huffyuvencdsp", checkasm_check_huffyuvencdsp },
141 #endif
142 #if CONFIG_IDCTDSP
143 { "idctdsp", checkasm_check_idctdsp },
144 #endif
145 #if CONFIG_JPEG2000_DECODER
146 { "jpeg2000dsp", checkasm_check_jpeg2000dsp },
147 #endif
148 #if CONFIG_LLAUDDSP
149 { "llauddsp", checkasm_check_llauddsp },
150 #endif
151 #if CONFIG_HUFFYUVDSP
152 { "llviddsp", checkasm_check_llviddsp },
153 #endif
154 #if CONFIG_LLVIDENCDSP
155 { "llvidencdsp", checkasm_check_llvidencdsp },
156 #endif
157 #if CONFIG_LPC
158 { "lpc", checkasm_check_lpc },
159 #endif
160 #if CONFIG_ME_CMP
161 { "motion", checkasm_check_motion },
162 #endif
163 #if CONFIG_MPEG4_DECODER
164 { "mpeg4videodsp", checkasm_check_mpeg4videodsp },
165 #endif
166 #if CONFIG_MPEGVIDEO
167 { "mpegvideo_unquantize", checkasm_check_mpegvideo_unquantize },
168 #endif
169 #if CONFIG_MPEGVIDEOENCDSP
170 { "mpegvideoencdsp", checkasm_check_mpegvideoencdsp },
171 #endif
172 #if CONFIG_OPUS_DECODER
173 { "opusdsp", checkasm_check_opusdsp },
174 #endif
175 #if CONFIG_PIXBLOCKDSP
176 { "pixblockdsp", checkasm_check_pixblockdsp },
177 #endif
178 #if CONFIG_PNG_DECODER
179 { "png", checkasm_check_png },
180 #endif
181 #if CONFIG_QPELDSP
182 { "qpeldsp", checkasm_check_qpeldsp },
183 #endif
184 #if CONFIG_RV34DSP
185 { "rv34dsp", checkasm_check_rv34dsp },
186 #endif
187 #if CONFIG_RV40_DECODER
188 { "rv40dsp", checkasm_check_rv40dsp },
189 #endif
190 #if CONFIG_SBC_ENCODER
191 { "sbcdsp", checkasm_check_sbcdsp },
192 #endif
193 #if CONFIG_SNOW_DECODER
194 { "snowdsp", checkasm_check_snowdsp },
195 #endif
196 #if CONFIG_SVQ1_ENCODER
197 { "svq1enc", checkasm_check_svq1enc },
198 #endif
199 #if CONFIG_TAK_DECODER
200 { "takdsp", checkasm_check_takdsp },
201 #endif
202 #if CONFIG_TTA_DECODER
203 { "ttadsp", checkasm_check_ttadsp },
204 #endif
205 #if CONFIG_TTA_ENCODER
206 { "ttaencdsp", checkasm_check_ttaencdsp },
207 #endif
208 #if CONFIG_UTVIDEO_DECODER
209 { "utvideodsp", checkasm_check_utvideodsp },
210 #endif
211 #if CONFIG_V210_DECODER
212 { "v210dec", checkasm_check_v210dec },
213 #endif
214 #if CONFIG_V210_ENCODER
215 { "v210enc", checkasm_check_v210enc },
216 #endif
217 #if CONFIG_VC1DSP
218 { "vc1dsp", checkasm_check_vc1dsp },
219 #endif
220 #if CONFIG_VP3DSP
221 { "vp3dsp", checkasm_check_vp3dsp },
222 #endif
223 #if CONFIG_VP6_DECODER
224 { "vp6dsp", checkasm_check_vp6dsp },
225 #endif
226 #if CONFIG_VP8DSP
227 { "vp8dsp", checkasm_check_vp8dsp },
228 #endif
229 #if CONFIG_VP9_DECODER
230 { "vp9dsp", checkasm_check_vp9dsp },
231 #endif
232 #if CONFIG_VIDEODSP
233 { "videodsp", checkasm_check_videodsp },
234 #endif
235 #if CONFIG_VORBIS_DECODER
236 { "vorbisdsp", checkasm_check_vorbisdsp },
237 #endif
238 #if CONFIG_VVC_DECODER
239 { "vvc_alf", checkasm_check_vvc_alf },
240 { "vvc_mc", checkasm_check_vvc_mc },
241 { "vvc_sao", checkasm_check_vvc_sao },
242 #endif
243#endif
244#if CONFIG_AVFILTER
245 #if CONFIG_SCENE_SAD
246 { "scene_sad", checkasm_check_scene_sad },
247 #endif
248 #if CONFIG_AFIR_FILTER
249 { "af_afir", checkasm_check_afir },
250 #endif
251 #if CONFIG_BLACKDETECT_FILTER
252 { "vf_blackdetect", checkasm_check_blackdetect },
253 #endif
254 #if CONFIG_BLEND_FILTER
255 { "vf_blend", checkasm_check_blend },
256 #endif
257 #if CONFIG_BWDIF_FILTER
258 { "vf_bwdif", checkasm_check_vf_bwdif },
259 #endif
260 #if CONFIG_COLORDETECT_FILTER
261 { "vf_colordetect", checkasm_check_colordetect },
262 #endif
263 #if CONFIG_COLORSPACE_FILTER
264 { "vf_colorspace", checkasm_check_colorspace },
265 #endif
266 #if CONFIG_EQ_FILTER
267 { "vf_eq", checkasm_check_vf_eq },
268 #endif
269 #if CONFIG_FSPP_FILTER
270 { "vf_fspp", checkasm_check_vf_fspp },
271 #endif
272 #if CONFIG_GBLUR_FILTER
273 { "vf_gblur", checkasm_check_vf_gblur },
274 #endif
275 #if CONFIG_HFLIP_FILTER
276 { "vf_hflip", checkasm_check_vf_hflip },
277 #endif
278 #if CONFIG_IDET_FILTER
279 { "vf_idet", checkasm_check_idet },
280 #endif
281 #if CONFIG_NLMEANS_FILTER
282 { "vf_nlmeans", checkasm_check_nlmeans },
283 #endif
284 #if CONFIG_PP7_FILTER
285 { "vf_pp7", checkasm_check_vf_pp7 },
286 #endif
287 #if CONFIG_THRESHOLD_FILTER
288 { "vf_threshold", checkasm_check_vf_threshold },
289 #endif
290 #if CONFIG_SOBEL_FILTER
291 { "vf_sobel", checkasm_check_vf_sobel },
292 #endif
293#endif
294#if CONFIG_SWSCALE
295 { "sw_gbrp", checkasm_check_sw_gbrp },
296 { "sw_range_convert", checkasm_check_sw_range_convert },
297 { "sw_rgb", checkasm_check_sw_rgb },
298 { "sw_scale", checkasm_check_sw_scale },
299 { "sw_xyz2rgb", checkasm_check_sw_xyz2rgb },
300 { "sw_yuv2rgb", checkasm_check_sw_yuv2rgb },
301 { "sw_yuv2yuv", checkasm_check_sw_yuv2yuv },
302 { "sw_ops", checkasm_check_sw_ops },
303#endif
304#if CONFIG_AVUTIL
305 { "aes", checkasm_check_aes },
306 { "crc", checkasm_check_crc, .uninit = checkasm_uninit_crc },
307 { "fixed_dsp", checkasm_check_fixed_dsp },
308 { "float_dsp", checkasm_check_float_dsp },
309 { "lls", checkasm_check_lls },
310#if CONFIG_PIXELUTILS
311 { "pixelutils",checkasm_check_pixelutils },
312#endif
313 { "av_tx", checkasm_check_av_tx, .uninit = checkasm_uninit_tx },
314#endif
315 { NULL }
316 /* NOTE: When adding a new test to this list here, it also needs to be
317 * added in tests/fate/checkasm.mak, otherwise it doesn't get executed
318 * as part of "make fate" or "make fate-checkasm". */
319};
320
321/* List of cpu flags to check */
322static const CheckasmCpuInfo cpuflags[] = {
323#if ARCH_AARCH64
324 { "ARMV8", "armv8", AV_CPU_FLAG_ARMV8 },
325 { "NEON", "neon", AV_CPU_FLAG_NEON },
326 { "DOTPROD", "dotprod", AV_CPU_FLAG_DOTPROD },
327 { "I8MM", "i8mm", AV_CPU_FLAG_I8MM },
328 { "SVE", "sve", AV_CPU_FLAG_SVE },
329 { "SVE2", "sve2", AV_CPU_FLAG_SVE2 },
330 { "SME", "sme", AV_CPU_FLAG_SME },
331 { "SME-I16I64", "sme_i16i64", AV_CPU_FLAG_SME_I16I64 },
332 { "CRC", "crc", AV_CPU_FLAG_ARM_CRC },
333 { "SME2", "sme2", AV_CPU_FLAG_SME2 },
334 { "PMULL", "pmull_eor3", AV_CPU_FLAG_PMULL|AV_CPU_FLAG_EOR3 },
335#elif ARCH_ARM
336 { "ARMV5TE", "armv5te", AV_CPU_FLAG_ARMV5TE },
337 { "ARMV6", "armv6", AV_CPU_FLAG_ARMV6 },
338 { "ARMV6T2", "armv6t2", AV_CPU_FLAG_ARMV6T2 },
339 { "VFP", "vfp", AV_CPU_FLAG_VFP },
340 { "VFP_VM", "vfp_vm", AV_CPU_FLAG_VFP_VM },
341 { "VFPV3", "vfp3", AV_CPU_FLAG_VFPV3 },
342 { "NEON", "neon", AV_CPU_FLAG_NEON },
343#elif ARCH_PPC
344 { "ALTIVEC", "altivec", AV_CPU_FLAG_ALTIVEC },
345 { "VSX", "vsx", AV_CPU_FLAG_VSX },
346 { "POWER8", "power8", AV_CPU_FLAG_POWER8 },
347#elif ARCH_RISCV
348 { "RVI", "rvi", AV_CPU_FLAG_RVI },
349 { "misaligned", "misaligned", AV_CPU_FLAG_RV_MISALIGNED },
350 { "RV_zbb", "rvb_b", AV_CPU_FLAG_RVB_BASIC },
351 { "RVB", "rvb", AV_CPU_FLAG_RVB },
352 { "RV_zve32x","rvv_i32", AV_CPU_FLAG_RVV_I32 },
353 { "RV_zve32f","rvv_f32", AV_CPU_FLAG_RVV_F32 },
354 { "RV_zve64x","rvv_i64", AV_CPU_FLAG_RVV_I64 },
355 { "RV_zve64d","rvv_f64", AV_CPU_FLAG_RVV_F64 },
356 { "RV_zvbb", "rv_zvbb", AV_CPU_FLAG_RV_ZVBB },
357#elif ARCH_MIPS
358 { "MMI", "mmi", AV_CPU_FLAG_MMI },
359 { "MSA", "msa", AV_CPU_FLAG_MSA },
360#elif ARCH_X86
361 { "MMX", "mmx", AV_CPU_FLAG_MMX|AV_CPU_FLAG_CMOV },
362 { "MMXEXT", "mmxext", AV_CPU_FLAG_MMXEXT },
363 { "SSE", "sse", AV_CPU_FLAG_SSE },
364 { "SSE2", "sse2", AV_CPU_FLAG_SSE2|AV_CPU_FLAG_SSE2SLOW },
365 { "SSE3", "sse3", AV_CPU_FLAG_SSE3|AV_CPU_FLAG_SSE3SLOW },
366 { "SSSE3", "ssse3", AV_CPU_FLAG_SSSE3|AV_CPU_FLAG_ATOM },
367 { "SSE4.1", "sse4", AV_CPU_FLAG_SSE4 },
368 { "SSE4.2", "sse42", AV_CPU_FLAG_SSE42 },
369 { "AES-NI", "aesni", AV_CPU_FLAG_AESNI },
370 { "CLMUL", "clmul", AV_CPU_FLAG_CLMUL },
371 { "AVX", "avx", AV_CPU_FLAG_AVX },
372 { "XOP", "xop", AV_CPU_FLAG_XOP },
373 { "FMA3", "fma3", AV_CPU_FLAG_FMA3 },
374 { "FMA4", "fma4", AV_CPU_FLAG_FMA4 },
375 { "AVX2", "avx2", AV_CPU_FLAG_AVX2 },
376 { "AVX-512", "avx512", AV_CPU_FLAG_AVX512 },
377 { "AVX-512ICL", "avx512icl", AV_CPU_FLAG_AVX512ICL },
378#elif ARCH_LOONGARCH
379 { "LSX", "lsx", AV_CPU_FLAG_LSX },
380 { "LASX", "lasx", AV_CPU_FLAG_LASX },
381#elif ARCH_WASM
382 { "SIMD128", "simd128", AV_CPU_FLAG_SIMD128 },
383#endif
384 { NULL }
385};
386
387static void set_cpu_flags(uint64_t flags)
388{
390}
391
392int main(int argc, const char *argv[])
393{
395 .cpu_flags = cpuflags,
396 .tests = tests,
397 .set_cpu_flags = set_cpu_flags,
398 .cpu = av_get_cpu_flags(),
399 };
400
401 return checkasm_main(&cfg, argc, argv);
402}
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
#define flags(name, subs,...)
Definition cbs_h264.c:74
static const CheckasmCpuInfo cpuflags[]
Definition checkasm.c:322
static void set_cpu_flags(uint64_t flags)
Definition checkasm.c:387
void checkasm_check_mpegvideo_unquantize(void)
void checkasm_check_qpeldsp(void)
Definition qpeldsp.c:53
void checkasm_check_h264dsp(void)
Definition h264dsp.c:503
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:808
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:51
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:190
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_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:673
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:460
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_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_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:1209
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:99
#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:96
#define AV_CPU_FLAG_VFPV3
Definition cpu.h:72
#define AV_CPU_FLAG_LASX
Definition cpu.h:93
#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:104
#define AV_CPU_FLAG_RVB_BASIC
Basic bit-manipulations.
Definition cpu.h:101
#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:97
#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:92
#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:107
#define AV_CPU_FLAG_MSA
Definition cpu.h:89
#define AV_CPU_FLAG_RV_ZVBB
Vector basic bit-manipulations.
Definition cpu.h:102
#define AV_CPU_FLAG_RVV_F32
Vectors of float's *‍/.
Definition cpu.h:98
#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:88
#define AV_CPU_FLAG_RVV_F64
Vectors of double's.
Definition cpu.h:100
#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:103
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:193
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:61
void checkasm_check_audiodsp(void)
Definition audiodsp.c:52
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:117