Implement UHADD8 instruction (#2908)

* Implement UHADD8 instruction along with a test unit

* Update PTC revision number
This commit is contained in:
Piyachet Kanda 2021-12-09 03:05:59 +07:00 committed by GitHub
parent acc0b0f313
commit 3e2f89b4fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 40 additions and 1 deletions

View file

@ -472,6 +472,24 @@ namespace ARMeilleure.Instructions
EmitDiv(context, true);
}
public static void Uhadd8(ArmEmitterContext context)
{
OpCode32AluReg op = (OpCode32AluReg)context.CurrOp;
Operand m = GetIntA32(context, op.Rm);
Operand n = GetIntA32(context, op.Rn);
Operand xor, res;
res = context.BitwiseAnd(m, n);
xor = context.BitwiseExclusiveOr(m, n);
xor = context.ShiftRightUI(xor, Const(1));
xor = context.BitwiseAnd(xor, Const(0x7F7F7F7Fu));
res = context.Add(res, xor);
SetIntA32(context, op.Rd, res);
}
public static void Usat(ArmEmitterContext context)
{
OpCode32Sat op = (OpCode32Sat)context.CurrOp;