diff options
author | Clement Courbet <courbet@google.com> | 2020-11-04 08:48:44 +0100 |
---|---|---|
committer | Clement Courbet <courbet@google.com> | 2020-11-04 08:48:44 +0100 |
commit | 8cfc872129a99782ab07a19171bf8eace85589ae (patch) | |
tree | cbdfa3f450563ab6c2c1a4827074d72aec414586 | |
parent | fd13d7ce09af2bcad6976b8f5207874992bdd908 (diff) | |
download | llvm-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.s | 6 | ||||
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp | 6 | ||||
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/Target.cpp | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/Target.h | 10 | ||||
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/X86/Target.cpp | 33 |
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]; }; |