From 4bd1ad16f93e8decf790191868690c3bd3875ee0 Mon Sep 17 00:00:00 2001 From: LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com> Date: Thu, 25 Mar 2021 23:33:32 +0100 Subject: Add Sqdmulh_Ve & Sqrdmulh_Ve Inst.s with Tests. (#2139) --- ARMeilleure/Instructions/InstEmitSimdArithmetic.cs | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'ARMeilleure/Instructions/InstEmitSimdArithmetic.cs') diff --git a/ARMeilleure/Instructions/InstEmitSimdArithmetic.cs b/ARMeilleure/Instructions/InstEmitSimdArithmetic.cs index 9c359882..eff6bf35 100644 --- a/ARMeilleure/Instructions/InstEmitSimdArithmetic.cs +++ b/ARMeilleure/Instructions/InstEmitSimdArithmetic.cs @@ -2642,22 +2642,27 @@ namespace ARMeilleure.Instructions public static void Sqadd_S(ArmEmitterContext context) { - EmitScalarSaturatingBinaryOpSx(context, SaturatingFlags.Add); + EmitScalarSaturatingBinaryOpSx(context, flags: SaturatingFlags.Add); } public static void Sqadd_V(ArmEmitterContext context) { - EmitVectorSaturatingBinaryOpSx(context, SaturatingFlags.Add); + EmitVectorSaturatingBinaryOpSx(context, flags: SaturatingFlags.Add); } public static void Sqdmulh_S(ArmEmitterContext context) { - EmitSaturatingBinaryOp(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: false), SaturatingFlags.ScalarSx); + EmitScalarSaturatingBinaryOpSx(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: false)); } public static void Sqdmulh_V(ArmEmitterContext context) { - EmitSaturatingBinaryOp(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: false), SaturatingFlags.VectorSx); + EmitVectorSaturatingBinaryOpSx(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: false)); + } + + public static void Sqdmulh_Ve(ArmEmitterContext context) + { + EmitVectorSaturatingBinaryOpByElemSx(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: false)); } public static void Sqneg_S(ArmEmitterContext context) @@ -2672,22 +2677,27 @@ namespace ARMeilleure.Instructions public static void Sqrdmulh_S(ArmEmitterContext context) { - EmitSaturatingBinaryOp(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: true), SaturatingFlags.ScalarSx); + EmitScalarSaturatingBinaryOpSx(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: true)); } public static void Sqrdmulh_V(ArmEmitterContext context) { - EmitSaturatingBinaryOp(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: true), SaturatingFlags.VectorSx); + EmitVectorSaturatingBinaryOpSx(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: true)); + } + + public static void Sqrdmulh_Ve(ArmEmitterContext context) + { + EmitVectorSaturatingBinaryOpByElemSx(context, (op1, op2) => EmitDoublingMultiplyHighHalf(context, op1, op2, round: true)); } public static void Sqsub_S(ArmEmitterContext context) { - EmitScalarSaturatingBinaryOpSx(context, SaturatingFlags.Sub); + EmitScalarSaturatingBinaryOpSx(context, flags: SaturatingFlags.Sub); } public static void Sqsub_V(ArmEmitterContext context) { - EmitVectorSaturatingBinaryOpSx(context, SaturatingFlags.Sub); + EmitVectorSaturatingBinaryOpSx(context, flags: SaturatingFlags.Sub); } public static void Sqxtn_S(ArmEmitterContext context) @@ -2850,12 +2860,12 @@ namespace ARMeilleure.Instructions public static void Suqadd_S(ArmEmitterContext context) { - EmitScalarSaturatingBinaryOpSx(context, SaturatingFlags.Accumulate); + EmitScalarSaturatingBinaryOpSx(context, flags: SaturatingFlags.Accumulate); } public static void Suqadd_V(ArmEmitterContext context) { - EmitVectorSaturatingBinaryOpSx(context, SaturatingFlags.Accumulate); + EmitVectorSaturatingBinaryOpSx(context, flags: SaturatingFlags.Accumulate); } public static void Uaba_V(ArmEmitterContext context) -- cgit v1.2.3