All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>, Jiri Olsa <jolsa@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	linux-perf-users@vger.kernel.org, Leo Yan <leo.yan@linaro.org>,
	German Gomez <german.gomez@arm.com>,
	Zhengjun Xing <zhengjun.xing@linux.intel.com>,
	James Clark <james.clark@arm.com>
Subject: [PATCH 09/12] perf test: Add 'brstack' test workload
Date: Wed,  9 Nov 2022 09:46:32 -0800	[thread overview]
Message-ID: <20221109174635.859406-10-namhyung@kernel.org> (raw)
In-Reply-To: <20221109174635.859406-1-namhyung@kernel.org>

The brstack is to run different kinds of branches repeatedly.  This is
necessary for brstack test case to verify if it has correct branch info.

  $ perf test -w brstack

I renamed the internal functions to have brstack_ prefix as it's too
generic name.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/tests/builtin-test.c      |  1 +
 tools/perf/tests/tests.h             |  1 +
 tools/perf/tests/workloads/Build     |  2 ++
 tools/perf/tests/workloads/brstack.c | 39 ++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+)
 create mode 100644 tools/perf/tests/workloads/brstack.c

diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index 9acb7a93eeb9..69fa56939309 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -123,6 +123,7 @@ static struct test_workload *workloads[] = {
 	&workload__thloop,
 	&workload__leafloop,
 	&workload__sqrtloop,
+	&workload__brstack,
 };
 
 static int num_subtests(const struct test_suite *t)
diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
index 18c40319e67c..dc96f59cac2e 100644
--- a/tools/perf/tests/tests.h
+++ b/tools/perf/tests/tests.h
@@ -204,5 +204,6 @@ DECLARE_WORKLOAD(noploop);
 DECLARE_WORKLOAD(thloop);
 DECLARE_WORKLOAD(leafloop);
 DECLARE_WORKLOAD(sqrtloop);
+DECLARE_WORKLOAD(brstack);
 
 #endif /* TESTS_H */
diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/Build
index 1ca95cb0fdb5..c933cdcf91d1 100644
--- a/tools/perf/tests/workloads/Build
+++ b/tools/perf/tests/workloads/Build
@@ -4,5 +4,7 @@ perf-y += noploop.o
 perf-y += thloop.o
 perf-y += leafloop.o
 perf-y += sqrtloop.o
+perf-y += brstack.o
 
 CFLAGS_leafloop.o         = -g -O0 -fno-inline -fno-omit-frame-pointer
+CFLAGS_brstack.o          = -g -O0 -fno-inline
diff --git a/tools/perf/tests/workloads/brstack.c b/tools/perf/tests/workloads/brstack.c
new file mode 100644
index 000000000000..61c9a9f24b43
--- /dev/null
+++ b/tools/perf/tests/workloads/brstack.c
@@ -0,0 +1,39 @@
+/* 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)
+{
+	if (argc > 0)
+		cnt = atoi(argv[0]);
+
+	while (1) {
+		if ((cnt++) > BENCH_RUNS)
+			break;
+		brstack_bench();/* call */
+	}			/* branch (uncond) */
+	return 0;
+}
+
+DEFINE_WORKLOAD(brstack);
-- 
2.38.1.431.g37b22c650d-goog


  parent reply	other threads:[~2022-11-09 17:47 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-09 17:46 [PATCHSET 00/12] perf test: Add test workloads (v1) Namhyung Kim
2022-11-09 17:46 ` [PATCH 01/12] perf test: Add -w/--workload option Namhyung Kim
2022-11-09 18:39   ` Arnaldo Carvalho de Melo
2022-11-09 19:00     ` Namhyung Kim
2022-11-09 17:46 ` [PATCH 02/12] perf test: Replace pipe test workload with noploop Namhyung Kim
2022-11-09 17:46 ` [PATCH 03/12] perf test: Add 'thloop' test workload Namhyung Kim
2022-11-09 18:39   ` Arnaldo Carvalho de Melo
2022-11-09 17:46 ` [PATCH 04/12] perf test: Replace record test workload with thloop Namhyung Kim
2022-11-09 17:46 ` [PATCH 05/12] perf test: Add 'leafloop' test workload Namhyung Kim
2022-11-09 17:46 ` [PATCH 06/12] perf test: Replace arm callgraph fp test workload with leafloop Namhyung Kim
2022-11-10 11:20   ` Leo Yan
2022-11-10 17:45     ` Namhyung Kim
2022-11-09 17:46 ` [PATCH 07/12] perf test: Add 'sqrtloop' test workload Namhyung Kim
2022-11-10 14:49   ` German Gomez
2022-11-10 17:48     ` Namhyung Kim
2022-11-09 17:46 ` [PATCH 08/12] perf test: Replace arm spe fork test workload with sqrtloop Namhyung Kim
2022-11-10 11:45   ` Leo Yan
2022-11-09 17:46 ` Namhyung Kim [this message]
2022-11-09 17:46 ` [PATCH 10/12] perf test: Replace brstack test workload Namhyung Kim
2022-11-09 17:46 ` [PATCH 11/12] perf test: Add 'datasym' " Namhyung Kim
2022-11-09 17:46 ` [PATCH 12/12] perf test: Replace data symbol test workload with datasym Namhyung Kim
2022-11-10 18:19 [PATCHSET 00/12] perf test: Add test workloads (v2) Namhyung Kim
2022-11-10 18:19 ` [PATCH 09/12] perf test: Add 'brstack' test workload Namhyung Kim
2022-11-16 11:39   ` James Clark
2022-11-16 23:06     ` Namhyung Kim
2022-11-16 23:38 [PATCHSET 00/12] perf test: Add test workloads (v3) Namhyung Kim
2022-11-16 23:38 ` [PATCH 09/12] perf test: Add 'brstack' test workload Namhyung Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221109174635.859406-10-namhyung@kernel.org \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=german.gomez@arm.com \
    --cc=irogers@google.com \
    --cc=james.clark@arm.com \
    --cc=jolsa@kernel.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=zhengjun.xing@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.