Skip to content

Commit 0f7ff26

Browse files
xhao22hongyuni
authored andcommitted
BM/PMU: Support new SIMD sampling format
Kernel patch series "Support SIMD/eGPRs/SSP registers sampling for perf" also change SIMD sampling format. https://lkml.org/lkml/2025/12/3/241 $perf record -I? available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31 SSP XMM0-15 YMM0-15 ZMM0-31 OPMASK0-7 Signed-off-by: Xudong Hao <xudong.hao@intel.com>
1 parent 210be56 commit 0f7ff26

2 files changed

Lines changed: 31 additions & 15 deletions

File tree

BM/pmu/apebs_tests.sh

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,10 @@ usage() {
2626
__EOF
2727
}
2828

29-
lbr_test() {
30-
level=$1
31-
perfdata="pebs.data"
32-
logfile="temp.txt"
33-
perf record -o "$perfdata" -b -e cycles:"$level" -a sleep 1 2> "$logfile"
34-
sample_count=$(grep "sample" $logfile | awk '{print $10}' | tr -cd "0-9")
35-
lbr_count=$(perf report -D -i $perfdata| grep -c "branch stack")
36-
test_print_trc "sample_count = $sample_count; lbr_count = $lbr_count"
37-
[[ $sample_count -eq 0 ]] && die "samples = 0!"
38-
[[ $sample_count -eq $lbr_count ]] || die "samples does not match!"
29+
clear_files() {
30+
for i in "$@"; do
31+
[[ -f $i ]] && test_print_trc "Remove file: $i" && rm "$i"
32+
done;
3933
}
4034

4135
lbr_test() {
@@ -54,11 +48,25 @@ xmm_test() {
5448
level=$1
5549
perfdata="pebs.data"
5650
logfile="temp.txt"
57-
perf record -o "$perfdata" -IXMM0 -e cycles:"$level" -a sleep 1 2> "$logfile"
51+
simdfile="simd.txt"
52+
local reg_type=0
53+
perf record -I? 2>&1|tee $simdfile
54+
grep 'XMM0-15' $simdfile > /dev/null && reg_type=0
55+
grep 'XMM0 XMM1' $simdfile > /dev/null && reg_type=1
56+
if [[ $reg_type -eq 0 ]]; then
57+
xmm_reg="XMM"
58+
mul=$((2 * 16))
59+
elif [[ $reg_type -eq 1 ]]; then
60+
xmm_reg="XMM0"
61+
mul=2
62+
fi
63+
64+
perf record -o $perfdata -I${xmm_reg} -e cycles:"$level" -a sleep 1 2>&1|tee $logfile
5865
sample_count=$(grep "sample" $logfile | awk '{print $10}' | tr -cd "0-9")
59-
count=$(perf report -D -i $perfdata| grep -c "XMM0")
66+
count=$(perf report -D -i $perfdata| grep -c "${xmm_reg}")
67+
clear_files $perfdata $logfile $simdfile
6068
test_print_trc "before sample_count = $sample_count; count = $count"
61-
sample_count=$((sample_count * 2))
69+
sample_count=$((sample_count * mul))
6270
test_print_trc "after sample_count = $sample_count; count = $count"
6371
[[ $sample_count -eq 0 ]] && die "samples = 0!"
6472
[[ $sample_count -eq $count ]] || die "samples does not match!"

BM/pmu/pmu_tests.sh

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,16 @@ arch_pebs_gp_reg_group_test() {
215215

216216
arch_pebs_xer_group_test() {
217217
level="p"
218-
# reg_group_test_more_option "OPMASK0" "opmask0" 1
219-
reg_group_test_more_option "YMMH0" "YMMH0" 2
218+
simdfile="simd.txt"
219+
do_cmd "perf record -I? 2>&1|tee $simdfile"
220+
if grep 'YMM0-15' $simdfile > /dev/null; then
221+
# All 16 YMM registers are recorded, so 4*16=64
222+
reg_group_test_more_option "YMM" "YMM" 64
223+
clear_files $simdfile
224+
else
225+
clear_files $simdfile
226+
die "SIMD sampling format is incorrect!"
227+
fi
220228
# reg_group_test_more_option "ZMMH0" "ZMMLH0" 4
221229
}
222230

0 commit comments

Comments
 (0)