[llvm] 8685445 - [llvm-exegesis][X86] Explicitly not support `WRFSBASE` opcode.

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 18 09:07:26 PST 2022


Author: Roman Lebedev
Date: 2022-12-18T20:07:02+03:00
New Revision: 8685445b3c9c6643432d24db6ffedddeb49ed8d2

URL: https://github.com/llvm/llvm-project/commit/8685445b3c9c6643432d24db6ffedddeb49ed8d2
DIFF: https://github.com/llvm/llvm-project/commit/8685445b3c9c6643432d24db6ffedddeb49ed8d2.diff

LOG: [llvm-exegesis][X86] Explicitly not support `WRFSBASE` opcode.

We can't serialize if for latency measurements, and when measuring uops,
it crashes so hard even `CrashRecoveryContext` doesn't stop it.

Looks like *this* was the last crasher, now `--opcode-index=-1`
succeeds for all three benchmark modes here.
At least with Duplication repetitor.

Added: 
    llvm/test/tools/llvm-exegesis/X86/latency/latency-WRFSBASE.s

Modified: 
    llvm/tools/llvm-exegesis/lib/X86/Target.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-exegesis/X86/latency/latency-WRFSBASE.s b/llvm/test/tools/llvm-exegesis/X86/latency/latency-WRFSBASE.s
new file mode 100644
index 0000000000000..7420067b9bcdc
--- /dev/null
+++ b/llvm/test/tools/llvm-exegesis/X86/latency/latency-WRFSBASE.s
@@ -0,0 +1,6 @@
+# RUN: llvm-exegesis -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mode=latency --skip-measurements -opcode-name=WRFSBASE -repetition-mode=duplicate 2>&1 | FileCheck %s
+# RUN: llvm-exegesis -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mode=latency --skip-measurements -opcode-name=WRFSBASE -repetition-mode=loop 2>&1 | FileCheck %s
+# RUN: llvm-exegesis -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mode=latency --skip-measurements -opcode-name=WRFSBASE64 -repetition-mode=duplicate 2>&1 | FileCheck %s
+# RUN: llvm-exegesis -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -mode=latency --skip-measurements -opcode-name=WRFSBASE64 -repetition-mode=loop 2>&1 | FileCheck %s
+
+CHECK: WRFSBASE{{(64)?}}: unsupported opcode

diff  --git a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp
index 3770431613e58..2fda99cee7c69 100644
--- a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp
+++ b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp
@@ -217,6 +217,8 @@ static const char *isInvalidOpcode(const Instruction &Instr) {
   case X86::LSS32rm:
   case X86::LSS64rm:
   case X86::SYSENTER:
+  case X86::WRFSBASE:
+  case X86::WRFSBASE64:
     return "unsupported opcode";
   default:
     break;


        


More information about the llvm-commits mailing list