A64: Implement FRINTA (scalar)
This commit is contained in:
parent
b228694012
commit
8718dc1692
@ -909,7 +909,7 @@ INST(FCVT_float, "FCVT", "00011
|
|||||||
//INST(FRINTP_float, "FRINTP (scalar)", "00011110yy100100110000nnnnnddddd")
|
//INST(FRINTP_float, "FRINTP (scalar)", "00011110yy100100110000nnnnnddddd")
|
||||||
//INST(FRINTM_float, "FRINTM (scalar)", "00011110yy100101010000nnnnnddddd")
|
//INST(FRINTM_float, "FRINTM (scalar)", "00011110yy100101010000nnnnnddddd")
|
||||||
//INST(FRINTZ_float, "FRINTZ (scalar)", "00011110yy100101110000nnnnnddddd")
|
//INST(FRINTZ_float, "FRINTZ (scalar)", "00011110yy100101110000nnnnnddddd")
|
||||||
//INST(FRINTA_float, "FRINTA (scalar)", "00011110yy100110010000nnnnnddddd")
|
INST(FRINTA_float, "FRINTA (scalar)", "00011110yy100110010000nnnnnddddd")
|
||||||
//INST(FRINTX_float, "FRINTX (scalar)", "00011110yy100111010000nnnnnddddd")
|
//INST(FRINTX_float, "FRINTX (scalar)", "00011110yy100111010000nnnnnddddd")
|
||||||
//INST(FRINTI_float, "FRINTI (scalar)", "00011110yy100111110000nnnnnddddd")
|
//INST(FRINTI_float, "FRINTI (scalar)", "00011110yy100111110000nnnnnddddd")
|
||||||
|
|
||||||
|
@ -152,4 +152,16 @@ bool TranslatorVisitor::FCVT_float(Imm<2> type, Imm<2> opc, Vec Vn, Vec Vd) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TranslatorVisitor::FRINTA_float(Imm<2> type, Vec Vn, Vec Vd) {
|
||||||
|
const boost::optional<size_t> datasize = GetDataSize(type);
|
||||||
|
if (!datasize || *datasize == 16) {
|
||||||
|
return UnallocatedEncoding();
|
||||||
|
}
|
||||||
|
|
||||||
|
const IR::U32U64 operand = V_scalar(*datasize, Vn);
|
||||||
|
const IR::U32U64 result = ir.FPRoundInt(operand, FP::RoundingMode::ToNearest_TieAwayFromZero, false);
|
||||||
|
V_scalar(*datasize, Vd, result);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Dynarmic::A64
|
} // namespace Dynarmic::A64
|
||||||
|
Loading…
x
Reference in New Issue
Block a user