diff options
| author | Leo Yan <leo.yan@arm.com> | 2025-11-12 18:24:39 +0000 |
|---|---|---|
| committer | Namhyung Kim <namhyung@kernel.org> | 2025-11-18 20:31:29 -0800 |
| commit | 6d47c32ccb0e85e484b523d324c471481b7ca9c1 (patch) | |
| tree | cef0de321a59ff516aead3b75ec7a0f4ac28b619 /tools/perf | |
| parent | f3b9bed72e37e5fa14184d8634a9c88117d1fcb1 (diff) | |
perf arm_spe: Report associated info for SVE / SME operations
SVE / SME operations can be predicated or Gather load / scatter store,
save the relevant info into record.
Signed-off-by: Leo Yan <leo.yan@arm.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Reviewed-by: James Clark <james.clark@linaro.org>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 4 | ||||
| -rw-r--r-- | tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c index 949c20816826..5b214fc4ca9f 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -220,6 +220,10 @@ static int arm_spe_read_record(struct arm_spe_decoder *decoder) decoder->record.op |= ARM_SPE_OP_ATOMIC; } else if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) { decoder->record.op |= ARM_SPE_OP_SVE; + if (payload & SPE_OP_PKT_SVE_PRED) + decoder->record.op |= ARM_SPE_OP_PRED; + if (payload & SPE_OP_PKT_SVE_SG) + decoder->record.op |= ARM_SPE_OP_SG; } break; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h index 7b4d26f2ebfe..d14cf6b95507 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -53,6 +53,8 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_EXCL = 1 << 23, ARM_SPE_OP_AR = 1 << 24, ARM_SPE_OP_DP = 1 << 25, /* Data processing */ + ARM_SPE_OP_PRED = 1 << 26, /* Predicated */ + ARM_SPE_OP_SG = 1 << 27, /* Gather/Scatter */ }; enum arm_spe_2nd_op_branch { |
