diff --git a/lib/Lifters/ValueLifter.cpp b/lib/Lifters/ValueLifter.cpp index abb550223..f68d4c0bb 100644 --- a/lib/Lifters/ValueLifter.cpp +++ b/lib/Lifters/ValueLifter.cpp @@ -352,6 +352,13 @@ ValueLifterImpl::Lift(llvm::ArrayRef data, llvm::Type *type, return llvm::ConstantFP::get(type, val.bitsToDouble()); } + case llvm::Type::X86_FP80TyID: { + const auto size = static_cast(dl.getTypeStoreSize(type)); + auto val = ConsumeBytesAsInt(data, size); + const llvm::APFloat float_val(llvm::APFloat::x87DoubleExtended(), val); + return llvm::ConstantFP::get(type, float_val); + } + default: LOG(FATAL) << "Cannot initialize constant of unhandled LLVM type " << remill::LLVMThingToString(type) << " at " << std::hex