mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-07 13:26:27 +00:00
A64: Implement SHA1M
This commit is contained in:
@@ -11,6 +11,11 @@ namespace {
|
||||
IR::U32 SHAchoose(IREmitter& ir, IR::U32 x, IR::U32 y, IR::U32 z) {
|
||||
return ir.Eor(ir.And(ir.Eor(y, z), x), z);
|
||||
}
|
||||
|
||||
IR::U32 SHAmajority(IREmitter& ir, IR::U32 x, IR::U32 y, IR::U32 z) {
|
||||
return ir.Or(ir.And(x, y), ir.And(ir.Or(x, y), z)) ;
|
||||
}
|
||||
|
||||
IR::U32 SHAparity(IREmitter& ir, IR::U32 x, IR::U32 y, IR::U32 z) {
|
||||
return ir.Eor(ir.Eor(y, z), x);
|
||||
}
|
||||
@@ -50,6 +55,12 @@ bool TranslatorVisitor::SHA1C(Vec Vm, Vec Vn, Vec Vd) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::SHA1M(Vec Vm, Vec Vn, Vec Vd) {
|
||||
const IR::U128 result = SHA1HashUpdate(ir, Vm, Vn, Vd, SHAmajority);
|
||||
ir.SetQ(Vd, result);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::SHA1P(Vec Vm, Vec Vn, Vec Vd) {
|
||||
const IR::U128 result = SHA1HashUpdate(ir, Vm, Vn, Vd, SHAparity);
|
||||
ir.SetQ(Vd, result);
|
||||
|
||||
Reference in New Issue
Block a user