Index: tools/llvm-exegesis/lib/X86/Target.cpp =================================================================== --- tools/llvm-exegesis/lib/X86/Target.cpp +++ tools/llvm-exegesis/lib/X86/Target.cpp @@ -26,7 +26,14 @@ if (OpcodeName.startswith("POPF") || OpcodeName.startswith("PUSHF") || OpcodeName.startswith("ADJCALLSTACK")) return llvm::make_error( - "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( + "unsupported second-form X87 instruction"); return llvm::Error::success(); }