summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2020-11-04 08:48:44 +0100
committerClement Courbet <courbet@google.com>2020-11-04 08:48:44 +0100
commit8cfc872129a99782ab07a19171bf8eace85589ae (patch)
treecbdfa3f450563ab6c2c1a4827074d72aec414586
parentfd13d7ce09af2bcad6976b8f5207874992bdd908 (diff)
downloadllvm-8cfc872129a99782ab07a19171bf8eace85589ae.tar.gz
Revert "Re-land "[llvm-exegesis] Save target state before running the benchmark."
Still issues on some architectures. This reverts commit fd13d7ce09af2bcad6976b8f5207874992bdd908.
-rw-r--r--llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s6
-rw-r--r--llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp6
-rw-r--r--llvm/tools/llvm-exegesis/lib/Target.cpp2
-rw-r--r--llvm/tools/llvm-exegesis/lib/Target.h10
-rw-r--r--llvm/tools/llvm-exegesis/lib/X86/Target.cpp33
5 files changed, 2 insertions, 55 deletions
diff --git a/llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s b/llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s
deleted file mode 100644
index be182d8fcf5b..000000000000
--- a/llvm/test/tools/llvm-exegesis/X86/uops-FLDENVm.s
+++ /dev/null
@@ -1,6 +0,0 @@
-# RUN: llvm-exegesis -mode=uops -opcode-name=FLDENVm,FLDL2E -repetition-mode=duplicate | FileCheck %s
-
-CHECK: mode: uops
-CHECK-NEXT: key:
-CHECK-NEXT: instructions:
-CHECK-NEXT: FLDENVm
diff --git a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp
index 2304e91b8b32..1bbad207a27e 100644
--- a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp
+++ b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp
@@ -71,10 +71,10 @@ private:
SmallVector<StringRef, 2> CounterNames;
StringRef(Counters).split(CounterNames, '+');
char *const ScratchPtr = Scratch->ptr();
- const ExegesisTarget &ET = State.getExegesisTarget();
for (auto &CounterName : CounterNames) {
CounterName = CounterName.trim();
- auto CounterOrError = ET.createCounter(CounterName, State);
+ auto CounterOrError =
+ State.getExegesisTarget().createCounter(CounterName, State);
if (!CounterOrError)
return CounterOrError.takeError();
@@ -93,7 +93,6 @@ private:
.concat(std::to_string(Reserved)));
Scratch->clear();
{
- auto PS = ET.withSavedState();
CrashRecoveryContext CRC;
CrashRecoveryContext::Enable();
const bool Crashed = !CRC.RunSafely([this, Counter, ScratchPtr]() {
@@ -102,7 +101,6 @@ private:
Counter->stop();
});
CrashRecoveryContext::Disable();
- PS.reset();
if (Crashed) {
std::string Msg = "snippet crashed while running";
#ifdef LLVM_ON_UNIX
diff --git a/llvm/tools/llvm-exegesis/lib/Target.cpp b/llvm/tools/llvm-exegesis/lib/Target.cpp
index 85180a1d6614..ad26c1678c78 100644
--- a/llvm/tools/llvm-exegesis/lib/Target.cpp
+++ b/llvm/tools/llvm-exegesis/lib/Target.cpp
@@ -147,8 +147,6 @@ const PfmCountersInfo &ExegesisTarget::getPfmCounters(StringRef CpuName) const {
return *Found->PCI;
}
-ExegesisTarget::SavedState::~SavedState() {} // anchor.
-
namespace {
// Default implementation.
diff --git a/llvm/tools/llvm-exegesis/lib/Target.h b/llvm/tools/llvm-exegesis/lib/Target.h
index 28c103aa1948..8a5624b42803 100644
--- a/llvm/tools/llvm-exegesis/lib/Target.h
+++ b/llvm/tools/llvm-exegesis/lib/Target.h
@@ -172,16 +172,6 @@ public:
// counters are defined for this CPU).
const PfmCountersInfo &getPfmCounters(StringRef CpuName) const;
- // Saves the CPU state that needs to be preserved when running a benchmark,
- // and returns and RAII object that restores the state on destruction.
- // By default no state is preserved.
- struct SavedState {
- virtual ~SavedState();
- };
- virtual std::unique_ptr<SavedState> withSavedState() const {
- return std::make_unique<SavedState>();
- }
-
private:
virtual bool matchesArch(Triple::ArchType Arch) const = 0;
diff --git a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp
index 8610afdeb9e5..827e2e27a2f8 100644
--- a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp
+++ b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp
@@ -26,9 +26,6 @@
#include <memory>
#include <string>
#include <vector>
-#if defined(_MSC_VER)
-#include <immintrin.h>
-#endif
namespace llvm {
namespace exegesis {
@@ -597,32 +594,6 @@ void ConstantInliner::initStack(unsigned Bytes) {
namespace {
-class X86SavedState : public ExegesisTarget::SavedState {
-public:
- X86SavedState() {
-#if defined(_MSC_VER)
- _fxsave64(FPState);
-#elif defined(__GNUC__)
- __builtin_ia32_fxsave64(FPState);
-#endif
- }
-
- ~X86SavedState() {
- // Restoring the X87 state does not flush pending exceptions, make sure
- // these exceptions are flushed now.
-#if defined(_MSC_VER)
- _clearfp();
- _fxrstor64(FPState);
-#elif defined(__GNUC__)
- asm volatile("fwait");
- __builtin_ia32_fxrstor64(FPState);
-#endif
- }
-
-private:
- alignas(16) char FPState[512];
-};
-
class ExegesisX86Target : public ExegesisTarget {
public:
ExegesisX86Target() : ExegesisTarget(X86CpuPfmCounters) {}
@@ -720,10 +691,6 @@ private:
#endif
}
- std::unique_ptr<SavedState> withSavedState() const override {
- return std::make_unique<X86SavedState>();
- }
-
static const unsigned kUnavailableRegisters[4];
};