[PATCH] D147926: [llvm-exegesis] Fix ifdefs in X86/Target.cpp
Pavel Kosov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 24 12:32:59 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rG7ead39aca61e: [llvm-exegesis] Fix ifdefs in X86/Target.cpp (authored by kpdev42).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147926/new/
https://reviews.llvm.org/D147926
Files:
llvm/test/tools/llvm-exegesis/X86/latency/dummy-counters.test
llvm/tools/llvm-exegesis/lib/X86/Target.cpp
Index: llvm/tools/llvm-exegesis/lib/X86/Target.cpp
===================================================================
--- llvm/tools/llvm-exegesis/lib/X86/Target.cpp
+++ llvm/tools/llvm-exegesis/lib/X86/Target.cpp
@@ -21,6 +21,7 @@
#include "llvm/MC/MCInstBuilder.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/Error.h"
+#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/TargetParser/Host.h"
@@ -31,7 +32,7 @@
#include <immintrin.h>
#include <intrin.h>
#endif
-#if defined(__x86_64__) && defined(_MSC_VER)
+#if defined(_MSC_VER) && defined(_M_X64)
#include <float.h> // For _clearfp in ~X86SavedState().
#endif
@@ -625,39 +626,35 @@
class X86SavedState : public ExegesisTarget::SavedState {
public:
X86SavedState() {
-#ifdef __x86_64__
-# if defined(_MSC_VER)
+#if defined(_MSC_VER) && defined(_M_X64)
_fxsave64(FPState);
Eflags = __readeflags();
-# elif defined(__GNUC__)
+#elif defined(__GNUC__) && defined(__x86_64__)
__builtin_ia32_fxsave64(FPState);
Eflags = __builtin_ia32_readeflags_u64();
-# endif
#else
- llvm_unreachable("X86 exegesis running on non-X86 target");
+ report_fatal_error("X86 exegesis running on unsupported target");
#endif
}
~X86SavedState() {
// Restoring the X87 state does not flush pending exceptions, make sure
// these exceptions are flushed now.
-#ifdef __x86_64__
-# if defined(_MSC_VER)
+#if defined(_MSC_VER) && defined(_M_X64)
_clearfp();
_fxrstor64(FPState);
__writeeflags(Eflags);
-# elif defined(__GNUC__)
+#elif defined(__GNUC__) && defined(__x86_64__)
asm volatile("fwait");
__builtin_ia32_fxrstor64(FPState);
__builtin_ia32_writeeflags_u64(Eflags);
-# endif
#else
- llvm_unreachable("X86 exegesis running on non-X86 target");
+ report_fatal_error("X86 exegesis running on unsupported target");
#endif
}
private:
-#ifdef __x86_64__
+#if defined(__x86_64__) || defined(_M_X64)
alignas(16) char FPState[512];
uint64_t Eflags;
#endif
@@ -767,7 +764,7 @@
// If the kernel supports it, the hardware still may not have it.
return X86LbrCounter::checkLbrSupport();
#else
- llvm_unreachable("Running X86 exegesis on non-X86 target");
+ report_fatal_error("Running X86 exegesis on unsupported target");
#endif
#endif
return llvm::make_error<llvm::StringError>(
Index: llvm/test/tools/llvm-exegesis/X86/latency/dummy-counters.test
===================================================================
--- llvm/test/tools/llvm-exegesis/X86/latency/dummy-counters.test
+++ llvm/test/tools/llvm-exegesis/X86/latency/dummy-counters.test
@@ -1,6 +1,5 @@
# RUN: llvm-exegesis -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mode=latency -opcode-name=LEA64r --use-dummy-perf-counters | FileCheck %s
-# TODO Support non-Linux systems
-# REQUIRES: exegesis-can-execute-x86_64, system-linux
+# REQUIRES: exegesis-can-execute-x86_64
CHECK: ---
CHECK-NEXT: mode: latency
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147926.516499.patch
Type: text/x-patch
Size: 2998 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230424/da984468/attachment.bin>
More information about the llvm-commits
mailing list