A64: Implement FADDP (scalar)
This commit is contained in:
parent
33fa65de23
commit
89e43867c1
2 changed files with 11 additions and 1 deletions
|
@ -427,7 +427,7 @@ INST(ADDP_pair, "ADDP (scalar)", "01011
|
|||
//INST(FMAXNMP_pair_1, "FMAXNMP (scalar)", "0101111000110000110010nnnnnddddd")
|
||||
//INST(FMAXNMP_pair_2, "FMAXNMP (scalar)", "011111100z110000110010nnnnnddddd")
|
||||
//INST(FADDP_pair_1, "FADDP (scalar)", "0101111000110000110110nnnnnddddd")
|
||||
//INST(FADDP_pair_2, "FADDP (scalar)", "011111100z110000110110nnnnnddddd")
|
||||
INST(FADDP_pair_2, "FADDP (scalar)", "011111100z110000110110nnnnnddddd")
|
||||
//INST(FMAXP_pair_1, "FMAXP (scalar)", "0101111000110000111110nnnnnddddd")
|
||||
//INST(FMAXP_pair_2, "FMAXP (scalar)", "011111100z110000111110nnnnnddddd")
|
||||
//INST(FMINNMP_pair_1, "FMINNMP (scalar)", "0101111010110000110010nnnnnddddd")
|
||||
|
|
|
@ -21,5 +21,15 @@ bool TranslatorVisitor::ADDP_pair(Imm<2> size, Vec Vn, Vec Vd) {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::FADDP_pair_2(bool size, Vec Vn, Vec Vd) {
|
||||
const size_t esize = size ? 64 : 32;
|
||||
|
||||
const IR::U32U64 operand1 = ir.VectorGetElement(esize, V(128, Vn), 0);
|
||||
const IR::U32U64 operand2 = ir.VectorGetElement(esize, V(128, Vn), 1);
|
||||
const IR::U128 result = ir.ZeroExtendToQuad(ir.FPAdd(operand1, operand2, true));
|
||||
V(128, Vd, result);
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace A64
|
||||
} // namespace Dynarmic
|
||||
|
|
Loading…
Reference in a new issue