diff options
author | Clement Courbet <courbet@google.com> | 2018-10-19 12:24:49 +0000 |
---|---|---|
committer | Clement Courbet <courbet@google.com> | 2018-10-19 12:24:49 +0000 |
commit | 8d0dd0ba0ecabb8e3f5322101ad87b608ab86fc9 (patch) | |
tree | 1b76ccb587a5f77b62dae33424e7d9398b55b382 | |
parent | 1a41a116ece742058c799299d1bf73f1d9626905 (diff) | |
download | bcm5719-llvm-8d0dd0ba0ecabb8e3f5322101ad87b608ab86fc9.tar.gz bcm5719-llvm-8d0dd0ba0ecabb8e3f5322101ad87b608ab86fc9.zip |
[llvm-exegesis] Mark second-form X87 instructions as unsupported.
Summary:
We only support the first form because we rely on information that is
only available there.
Reviewers: gchatelet
Subscribers: tschuett, llvm-commits
Differential Revision: https://reviews.llvm.org/D53430
llvm-svn: 344782
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/X86/Target.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp index ae5c2e8d25e..1a7d290b1af 100644 --- a/llvm/tools/llvm-exegesis/lib/X86/Target.cpp +++ b/llvm/tools/llvm-exegesis/lib/X86/Target.cpp @@ -26,7 +26,14 @@ static llvm::Error IsInvalidOpcode(const Instruction &Instr) { if (OpcodeName.startswith("POPF") || OpcodeName.startswith("PUSHF") || OpcodeName.startswith("ADJCALLSTACK")) return llvm::make_error<BenchmarkFailure>( - "Unsupported opcode: Push/Pop/AdjCallStack"); + "unsupported opcode: Push/Pop/AdjCallStack"); + // We do not handle second-form X87 instructions. We only handle first-form + // ones (_Fp), see comment in X86InstrFPStack.td. + for (const Operand &Op : Instr.Operands) + if (Op.isReg() && Op.isExplicit() && + Op.getExplicitOperandInfo().RegClass == llvm::X86::RSTRegClassID) + return llvm::make_error<BenchmarkFailure>( + "unsupported second-form X87 instruction"); return llvm::Error::success(); } |