Add UABD instruction

This commit is contained in:
gdkchan 2018-03-30 16:30:23 -03:00
parent ba43af5765
commit 19b8344568
2 changed files with 15 additions and 7 deletions

View file

@ -546,18 +546,25 @@ namespace ChocolArm64.Instruction
EmitVectorBinaryOpZx(Context, () => Context.Emit(OpCodes.Sub));
}
public static void Uabd_V(AILEmitterCtx Context)
{
EmitVectorTernaryOpZx(Context, () => EmitAbd(Context));
}
public static void Uabdl_V(AILEmitterCtx Context)
{
EmitVectorWidenRnRmTernaryOpZx(Context, () =>
{
Context.Emit(OpCodes.Sub);
EmitVectorWidenRnRmTernaryOpZx(Context, () => EmitAbd(Context));
}
Type[] Types = new Type[] { typeof(long) };
private static void EmitAbd(AILEmitterCtx Context)
{
Context.Emit(OpCodes.Sub);
Context.EmitCall(typeof(Math).GetMethod(nameof(Math.Abs), Types));
Type[] Types = new Type[] { typeof(long) };
Context.Emit(OpCodes.Add);
});
Context.EmitCall(typeof(Math).GetMethod(nameof(Math.Abs), Types));
Context.Emit(OpCodes.Add);
}
public static void Uaddl_V(AILEmitterCtx Context)