mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
8e91b0faf1
Use a simple SmallVector to track the lifetime of simulated instructions. An ordered map was not needed because instructions are already picked in program order. It is also much faster if we avoid searching for already retired instructions at the end of every cycle. The new policy only triggers a "garbage collection" when the number of retired instructions becomes significantly big when compared with the total size of the vector. While working on this, I noticed that instructions were correctly retired, but their internal state was not updated (i.e. there was no transition from the EXECUTED state, to the RETIRED state). While this was not a problem for the views, it prevented the EntryStage from correctly garbage collecting already retired instructions. That was a bad oversight, and this patch fixes it. The observed speedup on a debug build of llvm-mca after this patch is ~6%. On a release build of llvm-mca, the observed speedup is ~%15%. llvm-svn: 346487 |
||
---|---|---|
.. | ||
include | ||
lib | ||
Views | ||
CMakeLists.txt | ||
CodeRegion.cpp | ||
CodeRegion.h | ||
CodeRegionGenerator.cpp | ||
CodeRegionGenerator.h | ||
llvm-mca.cpp | ||
LLVMBuild.txt | ||
PipelinePrinter.cpp | ||
PipelinePrinter.h |