On Tue, Jul 28, 2026 at 10:27 PM Tamar Christina <[email protected]> wrote: > > > -----Original Message----- > > From: [email protected] <[email protected]> > > Sent: 21 July 2026 15:29 > > To: [email protected] > > Cc: Tamar Christina <[email protected]>; [email protected]; > > [email protected]; [email protected]; Kyrylo Tkachov > > <[email protected]> > > Subject: [PATCH] aarch64: Limit Arm SPE probes to PMU events > > > > From: Kyrylo Tkachov <[email protected]> > > > > The autoprofile bootstrap support probes for Arm SPE from gcc/configure, > > gcc-auto-profile, and the profile-optimization testsuite support. Each > > bare "perf list" scans every event class even though arm_spe is a PMU. > > This can make the probe unnecessarily slow on systems with many events. > > > > Use "perf list pmu" at all three call sites. The PMU event class filter > > has long been supported by perf and still reports arm_spe. Stubbed BRBE, > > SPE, and fallback paths select the same profiler as before. > > > > This patch actually saves a few minutes of end-to-end bootstrap time on my > > SPE > > AArch64 many-core system. > > > > Ok for trunk? > > LGTM.
ok. > > Thanks, > Tamar > > > Thanks, > > Kyrill > > > > gcc/ChangeLog: > > > > * config/aarch64/gcc-auto-profile: Probe for arm_spe with > > "perf list pmu" instead of "perf list". > > * configure.ac: Likewise. > > * configure: Regenerate. > > > > gcc/testsuite/ChangeLog: > > > > * lib/profopt.exp: Likewise. > > > > Signed-off-by: Kyrylo Tkachov <[email protected]> > > --- > > gcc/config/aarch64/gcc-auto-profile | 2 +- > > gcc/configure | 2 +- > > gcc/configure.ac | 2 +- > > gcc/testsuite/lib/profopt.exp | 2 +- > > 4 files changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/gcc/config/aarch64/gcc-auto-profile b/gcc/config/aarch64/gcc- > > auto-profile > > index 8f7502b30e3..6e33047698c 100755 > > --- a/gcc/config/aarch64/gcc-auto-profile > > +++ b/gcc/config/aarch64/gcc-auto-profile > > @@ -45,7 +45,7 @@ if [ "$use_brbe" = true ] ; then > > set -x > > perf record --inherit -o perf.data -j any,$FLAGS "$@" > > set +x > > -elif [ -n "$(perf list | grep arm_spe)" ] ; then > > +elif [ -n "$(perf list pmu | grep arm_spe)" ]; then > > echo >&2 "Info: Using SPE to collect branch profiles" > > set -x > > perf record --inherit -o perf.data -e arm_spe_0/branch_filter=1/ "$@" > > diff --git a/gcc/configure b/gcc/configure > > index 8f2ecfcffdc..cf2dfd99235 100755 > > --- a/gcc/configure > > +++ b/gcc/configure > > @@ -35189,7 +35189,7 @@ $as_echo_n "checking AArch64 build supports > > SPE profiling for autoprofiledbootst > > if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | > > grep > > "PMU Hardware or event type doesn't support branch stack sampling.")"; > > then > > AFDO_PROFILER=perf > > aarch64_spe_support="using BRBE instead" > > - elif test -n "$($PERF list | grep arm_spe)"; then > > + elif test -n "$($PERF list pmu | grep arm_spe)"; then > > AFDO_PROFILER=perf_spe > > aarch64_spe_support=yes > > fi > > diff --git a/gcc/configure.ac b/gcc/configure.ac > > index 030ee373a6a..77ec150c3e2 100644 > > --- a/gcc/configure.ac > > +++ b/gcc/configure.ac > > @@ -7881,7 +7881,7 @@ if test x$PERF != xno; then > > if test ! -n "$($PERF record -j any,u -o /dev/null /bin/true 2>&1 | > > grep > > "PMU Hardware or event type doesn't support branch stack sampling.")"; > > then > > AFDO_PROFILER=perf > > aarch64_spe_support="using BRBE instead" > > - elif test -n "$($PERF list | grep arm_spe)"; then > > + elif test -n "$($PERF list pmu | grep arm_spe)"; then > > AFDO_PROFILER=perf_spe > > aarch64_spe_support=yes > > fi > > diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp > > index 4f3f61958aa..cd80d5e9402 100644 > > --- a/gcc/testsuite/lib/profopt.exp > > +++ b/gcc/testsuite/lib/profopt.exp > > @@ -456,7 +456,7 @@ proc profopt-execute { src } { > > set bprefix "afdo." > > set compiler [lindex $GCC_UNDER_TEST 0] > > set autofdo_version [string trim [lindex [remote_exec target > > "$compiler --print-autofdo-gcov-version"] 1] ] > > - set profiler_check [string trim [lindex [remote_exec target > > "perf --no-pager list | grep arm_spe"] 1]] > > + set profiler_check [string trim [lindex [remote_exec target > > "perf --no-pager list pmu | grep arm_spe"] 1]] > > if {$profiler_check ne ""} { > > set profiler "perf_spe" > > } else { > > -- > > 2.50.1 (Apple Git-155) >
