================ @@ -88,6 +89,45 @@ struct PerfSpeEventsTestHelper : public testing::Test { return SampleSize == DA.BasicSamples.size(); } + + /// Compare LBREntries + bool checkLBREntry(const LBREntry &Lhs, const LBREntry &Rhs) { + return Lhs.From == Rhs.From && Lhs.To == Rhs.To && + Lhs.Mispred == Rhs.Mispred; + } + + /// Parse and check SPE brstack as LBR + void parseAndCheckBrstackEvents( + uint64_t PID, + const std::vector<SmallVector<LBREntry, 2>> &ExpectedSamples) { + int NumSamples = 0; + + DataAggregator DA("<pseudo input>"); + DA.ParsingBuf = opts::ReadPerfEvents; + DA.BC = BC.get(); + DataAggregator::MMapInfo MMap; + DA.BinaryMMapInfo.insert(std::make_pair(PID, MMap)); + + // Process buffer. + while (DA.hasData()) { ---------------- paschalis-mpeis wrote:
Right. To do this we need to expand our context further, creating mock functions with valid addresses, allowing those branches to be parsed+stored in `BranchLBRs`. That may be too much work; if that's the case we can skip. https://github.com/llvm/llvm-project/pull/129231 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits