diff --git a/src/frontend/A64/translate/impl/floating_point_data_processing_one_register.cpp b/src/frontend/A64/translate/impl/floating_point_data_processing_one_register.cpp index 66b6d377..a2556966 100644 --- a/src/frontend/A64/translate/impl/floating_point_data_processing_one_register.cpp +++ b/src/frontend/A64/translate/impl/floating_point_data_processing_one_register.cpp @@ -149,12 +149,12 @@ bool TranslatorVisitor::FCVT_float(Imm<2> type, Imm<2> opc, Vec Vn, Vec Vd) { static bool FloatingPointRoundToIntegral(TranslatorVisitor& v, Imm<2> type, Vec Vn, Vec Vd, FP::RoundingMode rounding_mode, bool exact) { const auto datasize = FPGetDataSize(type); - if (!datasize || *datasize == 16) { + if (!datasize) { return v.UnallocatedEncoding(); } - const IR::U32U64 operand = v.V_scalar(*datasize, Vn); - const IR::U32U64 result = v.ir.FPRoundInt(operand, rounding_mode, exact); + const IR::U16U32U64 operand = v.V_scalar(*datasize, Vn); + const IR::U16U32U64 result = v.ir.FPRoundInt(operand, rounding_mode, exact); v.V_scalar(*datasize, Vd, result); return true; }