A64: Implement scalar variant of NEG
This commit is contained in:
parent
b4f3051e4b
commit
3ad4e547e4
2 changed files with 13 additions and 1 deletions
|
@ -416,7 +416,7 @@ INST(UCVTF_int_2, "UCVTF (vector, integer)", "01111
|
||||||
//INST(SQNEG_1, "SQNEG", "01111110zz100000011110nnnnnddddd")
|
//INST(SQNEG_1, "SQNEG", "01111110zz100000011110nnnnnddddd")
|
||||||
//INST(CMGE_zero_1, "CMGE (zero)", "01111110zz100000100010nnnnnddddd")
|
//INST(CMGE_zero_1, "CMGE (zero)", "01111110zz100000100010nnnnnddddd")
|
||||||
//INST(CMLE_1, "CMLE (zero)", "01111110zz100000100110nnnnnddddd")
|
//INST(CMLE_1, "CMLE (zero)", "01111110zz100000100110nnnnnddddd")
|
||||||
//INST(NEG_1, "NEG (vector)", "01111110zz100000101110nnnnnddddd")
|
INST(NEG_1, "NEG (vector)", "01111110zz100000101110nnnnnddddd")
|
||||||
//INST(SQXTUN_1, "SQXTUN, SQXTUN2", "01111110zz100001001010nnnnnddddd")
|
//INST(SQXTUN_1, "SQXTUN, SQXTUN2", "01111110zz100001001010nnnnnddddd")
|
||||||
//INST(UQXTN_1, "UQXTN, UQXTN2", "01111110zz100001010010nnnnnddddd")
|
//INST(UQXTN_1, "UQXTN, UQXTN2", "01111110zz100001010010nnnnnddddd")
|
||||||
//INST(FCVTXN_1, "FCVTXN, FCVTXN2", "011111100z100001011010nnnnnddddd")
|
//INST(FCVTXN_1, "FCVTXN, FCVTXN2", "011111100z100001011010nnnnnddddd")
|
||||||
|
|
|
@ -8,6 +8,18 @@
|
||||||
|
|
||||||
namespace Dynarmic::A64 {
|
namespace Dynarmic::A64 {
|
||||||
|
|
||||||
|
bool TranslatorVisitor::NEG_1(Imm<2> size, Vec Vn, Vec Vd) {
|
||||||
|
if (size != 0b11) {
|
||||||
|
return ReservedValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
const IR::U64 operand = V_scalar(64, Vn);
|
||||||
|
const IR::U64 result = ir.Sub(ir.Imm64(0), operand);
|
||||||
|
|
||||||
|
V_scalar(64, Vd, result);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool TranslatorVisitor::UCVTF_int_2(bool sz, Vec Vn, Vec Vd) {
|
bool TranslatorVisitor::UCVTF_int_2(bool sz, Vec Vn, Vec Vd) {
|
||||||
const auto esize = sz ? 64 : 32;
|
const auto esize = sz ? 64 : 32;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue