From 8685445b3c9c6643432d24db6ffedddeb49ed8d2 Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 18 Dec 2022 19:43:31 +0300 Subject: [PATCH] [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. --- llvm/test/tools/llvm-exegesis/X86/latency/latency-WRFSBASE.s | 6 ++++++ llvm/tools/llvm-exegesis/lib/X86/Target.cpp | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 llvm/test/tools/llvm-exegesis/X86/latency/latency-WRFSBASE.s 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 0000000..7420067 --- /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 3770431..2fda99c 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; -- 2.7.4