summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
committerpatrick <patrick@openbsd.org>2018-04-06 14:26:03 +0000
commitbdabc2f19ffb9e20600dad6e8a300842a7bda50e (patch)
treec50e7b2e5449b074651bb82a58517a8ebc4a8cf7 /gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp
parentPrint a 'p' flag for file descriptors that were opened after pledge(2). (diff)
downloadwireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.tar.xz
wireguard-openbsd-bdabc2f19ffb9e20600dad6e8a300842a7bda50e.zip
Import LLVM 6.0.1 release including clang, lld and lldb.
"where is the kaboom?" deraadt@
Diffstat (limited to 'gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp')
-rw-r--r--gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp b/gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp
index f6d5bc80ddf..8693f344f9b 100644
--- a/gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp
+++ b/gnu/llvm/lib/CodeGen/TargetSubtargetInfo.cpp
@@ -11,11 +11,12 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/ADT/Optional.h"
#include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetSchedule.h"
#include "llvm/MC/MCInst.h"
-#include "llvm/Target/TargetSubtargetInfo.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/raw_ostream.h"
#include <string>
@@ -37,6 +38,10 @@ bool TargetSubtargetInfo::enableAtomicExpand() const {
return true;
}
+bool TargetSubtargetInfo::enableIndirectBrExpand() const {
+ return false;
+}
+
bool TargetSubtargetInfo::enableMachineScheduler() const {
return false;
}
@@ -50,6 +55,10 @@ bool TargetSubtargetInfo::enableRALocalReassignment(
return true;
}
+bool TargetSubtargetInfo::enableAdvancedRASplitCost() const {
+ return false;
+}
+
bool TargetSubtargetInfo::enablePostRAScheduler() const {
return getSchedModel().PostRAScheduler;
}
@@ -93,9 +102,15 @@ std::string TargetSubtargetInfo::getSchedInfoStr(MCInst const &MCI) const {
// that could be changed during the compilation
TargetSchedModel TSchedModel;
TSchedModel.init(getSchedModel(), this, getInstrInfo());
- if (!TSchedModel.hasInstrSchedModel())
+ unsigned Latency;
+ if (TSchedModel.hasInstrSchedModel())
+ Latency = TSchedModel.computeInstrLatency(MCI.getOpcode());
+ else if (TSchedModel.hasInstrItineraries()) {
+ auto *ItinData = TSchedModel.getInstrItineraries();
+ Latency = ItinData->getStageLatency(
+ getInstrInfo()->get(MCI.getOpcode()).getSchedClass());
+ } else
return std::string();
- unsigned Latency = TSchedModel.computeInstrLatency(MCI.getOpcode());
Optional<double> RThroughput =
TSchedModel.computeInstrRThroughput(MCI.getOpcode());
return createSchedInfoStr(Latency, RThroughput);