llvm-project/llvm/tools/llvm-profgen
Hongtao Yu 23391febd8 [llvm-profgen] Generating probe-based non-CS profile.
I'm bring up the support of pseudo-probe-based non-CS profile generation. The approach is quite similar to generating dwarf-based non-CS profile. The main difference is for a given linear instruction range, instead of each disassembled instruction,  pseudo probes that are covered by the range are processed. The pseudo probe extraction code is shared with CS probe profile generation.

I'm seeing 0.7% performance win for one of our internal large benchmark compared to using non-CS dwarf-based profile, and 0.5% win for another large benchmark when combined with profi.

Reviewed By: wenlei

Differential Revision: https://reviews.llvm.org/D120335
2022-03-01 18:49:08 -08:00
..
CMakeLists.txt [llvm-profgen] Switch to DWARF-based symbol and ranges 2021-10-29 09:59:12 -07:00
CSPreInliner.cpp Cleanup include: DebugInfo/Symbolize 2022-02-24 13:25:11 +01:00
CSPreInliner.h [CSSPGO] Split context string to deduplicate function name used in the context. 2021-08-30 20:09:29 -07:00
CallContext.h [CSSPGO] Rename the field of SampleContextFrame 2021-10-04 19:06:59 -07:00
ErrorHandling.h [llvm-profgen] Fix bug of setting function entry 2021-11-12 12:18:43 -08:00
PerfReader.cpp Cleanup include: DebugInfo/Symbolize 2022-02-24 13:25:11 +01:00
PerfReader.h [CSSPGO][llvm-profgen] Fix external address issues of perf reader (return to external addr part) 2021-12-14 16:40:54 -08:00
ProfileGenerator.cpp [llvm-profgen] Generating probe-based non-CS profile. 2022-03-01 18:49:08 -08:00
ProfileGenerator.h [llvm-profgen] Generating probe-based non-CS profile. 2022-03-01 18:49:08 -08:00
ProfiledBinary.cpp Cleanup include: DebugInfo/Symbolize 2022-02-24 13:25:11 +01:00
ProfiledBinary.h Cleanup includes: ProfileData 2022-02-24 13:25:11 +01:00
llvm-profgen.cpp Cleanup include: DebugInfo/Symbolize 2022-02-24 13:25:11 +01:00