aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2024-10-23 14:44:11 +0300
committerMartin Storsjö <martin@martin.st>2024-12-11 10:51:15 +0200
commit4b524649ff96b25edd275ce1662f5839102aa0af (patch)
tree3c5071a38d4853cefff8ef4c6e8587b35e893b89
parentee903c4786ed13d2d9ca63cff02fcef3238f881b (diff)
downloadffmpeg-4b524649ff96b25edd275ce1662f5839102aa0af.tar.gz
checkasm: Print benchmarks of C-only functions
This corresponds to commit 9278a14cf406f8edb5052c42b83750112bf5b515 in dav1d. Omitting the C-only functions doesn't speed up benchmarking anyway (as those has to be benchmarked before we know if we have any corresponding assembly functions), and being able to benchmark those functions without corresponding assembly can be valuable in a number of cases. Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r--tests/checkasm/checkasm.c48
1 files changed, 23 insertions, 25 deletions
diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
index b00c3c2a9f..14742081ca 100644
--- a/tests/checkasm/checkasm.c
+++ b/tests/checkasm/checkasm.c
@@ -631,34 +631,32 @@ static inline double avg_cycles_per_call(const CheckasmPerf *const p)
static void print_benchs(CheckasmFunc *f)
{
if (f) {
+ CheckasmFuncVersion *v = &f->versions;
+ const CheckasmPerf *p = &v->perf;
+ const double baseline = avg_cycles_per_call(p);
+ double decicycles;
+
print_benchs(f->child[0]);
- /* Only print functions with at least one assembly version */
- if (f->versions.cpu || f->versions.next) {
- CheckasmFuncVersion *v = &f->versions;
- const CheckasmPerf *p = &v->perf;
- const double baseline = avg_cycles_per_call(p);
- double decicycles;
- do {
- if (p->iterations) {
- p = &v->perf;
- decicycles = avg_cycles_per_call(p);
- if (state.csv || state.tsv) {
- const char sep = state.csv ? ',' : '\t';
- printf("%s%c%s%c%.1f\n", f->name, sep,
- cpu_suffix(v->cpu), sep,
- decicycles / 10.0);
- } else {
- const int pad_length = 10 + 50 -
- printf("%s_%s:", f->name, cpu_suffix(v->cpu));
- const double ratio = decicycles ?
- baseline / decicycles : 0.0;
- printf("%*.1f (%5.2fx)\n", FFMAX(pad_length, 0),
- decicycles / 10.0, ratio);
- }
+ do {
+ if (p->iterations) {
+ p = &v->perf;
+ decicycles = avg_cycles_per_call(p);
+ if (state.csv || state.tsv) {
+ const char sep = state.csv ? ',' : '\t';
+ printf("%s%c%s%c%.1f\n", f->name, sep,
+ cpu_suffix(v->cpu), sep,
+ decicycles / 10.0);
+ } else {
+ const int pad_length = 10 + 50 -
+ printf("%s_%s:", f->name, cpu_suffix(v->cpu));
+ const double ratio = decicycles ?
+ baseline / decicycles : 0.0;
+ printf("%*.1f (%5.2fx)\n", FFMAX(pad_length, 0),
+ decicycles / 10.0, ratio);
}
- } while ((v = v->next));
- }
+ }
+ } while ((v = v->next));
print_benchs(f->child[1]);
}