129d97deeSIan Rogers#!/bin/bash 24a87dea9SIan Rogers# perf all metrics test 34a87dea9SIan Rogers# SPDX-License-Identifier: GPL-2.0 44a87dea9SIan Rogers 500236a2dSIan Rogerserr=0 64a87dea9SIan Rogersfor m in $(perf list --raw-dump metrics); do 74a87dea9SIan Rogers echo "Testing $m" 84a87dea9SIan Rogers result=$(perf stat -M "$m" true 2>&1) 9*a6bdb815SBarnali Guha Thakurata if [[ "$result" =~ ${m:0:50} ]] || [[ "$result" =~ "<not supported>" ]] 1029d97deeSIan Rogers then 1129d97deeSIan Rogers continue 1229d97deeSIan Rogers fi 1329d97deeSIan Rogers # Failed so try system wide. 14f9fa0778SKajol Jain result=$(perf stat -M "$m" -a sleep 0.01 2>&1) 15*a6bdb815SBarnali Guha Thakurata if [[ "$result" =~ ${m:0:50} ]] 1629d97deeSIan Rogers then 1729d97deeSIan Rogers continue 1829d97deeSIan Rogers fi 1929d97deeSIan Rogers # Failed again, possibly the workload was too small so retry with something 2029d97deeSIan Rogers # longer. 214a87dea9SIan Rogers result=$(perf stat -M "$m" perf bench internals synthesize 2>&1) 22*a6bdb815SBarnali Guha Thakurata if [[ "$result" =~ ${m:0:50} ]] 2329d97deeSIan Rogers then 2429d97deeSIan Rogers continue 2529d97deeSIan Rogers fi 264a87dea9SIan Rogers echo "Metric '$m' not printed in:" 274a87dea9SIan Rogers echo "$result" 2829d97deeSIan Rogers if [[ "$err" != "1" ]] 2929d97deeSIan Rogers then 3000236a2dSIan Rogers err=2 3129d97deeSIan Rogers if [[ "$result" =~ "FP_ARITH" || "$result" =~ "AMX" ]] 3229d97deeSIan Rogers then 3329d97deeSIan Rogers echo "Skip, not fail, for FP issues" 3429d97deeSIan Rogers elif [[ "$result" =~ "PMM" ]] 3529d97deeSIan Rogers then 3629d97deeSIan Rogers echo "Skip, not fail, for Optane memory issues" 3700236a2dSIan Rogers else 3800236a2dSIan Rogers err=1 3900236a2dSIan Rogers fi 404a87dea9SIan Rogers fi 414a87dea9SIan Rogersdone 424a87dea9SIan Rogers 4300236a2dSIan Rogersexit "$err" 44