[llvm-mca] Allow the definition of custom strategies for selecting processor resource...
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Thu, 23 Aug 2018 15:04:52 +0000 (15:04 +0000)
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>
Thu, 23 Aug 2018 15:04:52 +0000 (15:04 +0000)
commit1715efd7ff6825bf8633759a43560f47b492128b
treea95f70b69a642fce0f09534cc3bd9b313e58b41b
parent9fa662b29637119bb43b2b3a2fb44b9825504c45
[llvm-mca] Allow the definition of custom strategies for selecting processor resource units.

With this patch, users can now customize the pipeline selection strategy for
scheduler resources. The resource selection strategy can be defined at processor
resource granularity. This enables the definition of different strategies for
different hardware schedulers.

To override the strategy associated with a processor resource, users can call
method ResourceManager::setCustomStrategy(), and pass a 'ResourceStrategy'
object in input.

Class ResourceStrategy is an abstract class which declares virtual method
`ResourceStrategy::select()`. Method select() is meant to implement the actual
strategy; it is responsible for picking the next best resource from a set of
available pipeline resources.  Custom strategy must simply override that method.

By default, processor resources are associated with instances of
'DefaultResourceStrategy'.  A 'DefaultResourceStrategy' internally implements a
simple round-robin selector. For more details, please refer to the code comments
in Scheduler.h.

llvm-svn: 340536
llvm/tools/llvm-mca/Scheduler.cpp
llvm/tools/llvm-mca/Scheduler.h