| /* SPDX-License-Identifier: GPL-2.0 */ |
| #include <stdlib.h> |
| #include "../tests.h" |
| |
| #define BENCH_RUNS 999999 |
| |
| static volatile int cnt; |
| |
| static void brstack_bar(void) { |
| } /* return */ |
| |
| static void brstack_foo(void) { |
| brstack_bar(); /* call */ |
| } /* return */ |
| |
| static void brstack_bench(void) { |
| void (*brstack_foo_ind)(void) = brstack_foo; |
| |
| if ((cnt++) % 3) /* branch (cond) */ |
| brstack_foo(); /* call */ |
| brstack_bar(); /* call */ |
| brstack_foo_ind(); /* call (ind) */ |
| } |
| |
| static int brstack(int argc, const char **argv) |
| { |
| int num_loops = BENCH_RUNS; |
| |
| if (argc > 0) |
| num_loops = atoi(argv[0]); |
| |
| while (1) { |
| if ((cnt++) > num_loops) |
| break; |
| brstack_bench();/* call */ |
| } /* branch (uncond) */ |
| return 0; |
| } |
| |
| DEFINE_WORKLOAD(brstack); |