summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h
diff options
context:
space:
mode:
authorMatt Davis <Matthew.Davis@sony.com>2018-09-11 18:47:48 +0000
committerMatt Davis <Matthew.Davis@sony.com>2018-09-11 18:47:48 +0000
commitdb834837c2645ed2f3df1e77aff6a4aa14d6980c (patch)
treeedb28df17860ea6553ec0623500d056e4adc9725 /llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h
parent44c1b3a331cd58792491a04c623b399b42ba3d1f (diff)
downloadbcm5719-llvm-db834837c2645ed2f3df1e77aff6a4aa14d6980c.tar.gz
bcm5719-llvm-db834837c2645ed2f3df1e77aff6a4aa14d6980c.zip
[llvm-mca] Delay calculation of Cycles per Resources, separate the cycles and resource quantities.
Summary: This patch removes the storing of accumulated floating point data within the llvm-mca library. This patch splits-up the two quantities: cycles and number of resource units. By splitting-up these two quantities, we delay the calculation of "cycles per resource unit" until that value is read, reducing the chance of accumulating floating point error. I considered using the APFloat, but after measuring performance, for a large (many iteration) sample, I decided to go with this faster solution. Reviewers: andreadb, courbet, RKSimon Reviewed By: andreadb Subscribers: llvm-commits, javed.absar, tschuett, gbedwell Differential Revision: https://reviews.llvm.org/D51903 llvm-svn: 341980
Diffstat (limited to 'llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h')
-rw-r--r--llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h b/llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h
index c3f893660eb..dfac15f53fc 100644
--- a/llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h
+++ b/llvm/tools/llvm-mca/include/HardwareUnits/ResourceManager.h
@@ -17,6 +17,7 @@
#define LLVM_TOOLS_LLVM_MCA_RESOURCE_MANAGER_H
#include "Instruction.h"
+#include "Support.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
@@ -344,7 +345,7 @@ public:
void issueInstruction(
const InstrDesc &Desc,
- llvm::SmallVectorImpl<std::pair<ResourceRef, double>> &Pipes);
+ llvm::SmallVectorImpl<std::pair<ResourceRef, ResourceCycles>> &Pipes);
void cycleEvent(llvm::SmallVectorImpl<ResourceRef> &ResourcesFreed);
OpenPOWER on IntegriCloud