aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-03-30 16:30:23 -0300
committergdkchan <gab.dark.100@gmail.com>2018-03-30 16:30:23 -0300
commit19b83445683cf9cfcf9e3d27596ab030eb08353c (patch)
treefc523f2bac9dfef080db688f6b6b3d0a688d1178 /ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs
parentba43af57657aa045032f6be4e2faba10d35436ae (diff)
Add UABD instruction
Diffstat (limited to 'ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs')
-rw-r--r--ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs21
1 files changed, 14 insertions, 7 deletions
diff --git a/ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs b/ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs
index 84a5babf..1d40ee89 100644
--- a/ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs
+++ b/ChocolArm64/Instruction/AInstEmitSimdArithmetic.cs
@@ -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)