Add Saddlv_V Inst. Improve Cnt_V, Dup_Gp & Ins_Gp Tests. Tuneup Cls_V & Clz_V Tests. (#720)

* Update PackageReferences.

* Improve Cnt_V Test. Tuneup Cls_V & Clz_V Tests.

Nit.

* Nit.

* Improve Dup_Gp & Ins_Gp Tests.

* Update for Saddlv_V Inst.

* Update for Saddlv_V Inst.

* Update for Saddlv_V Inst.
This commit is contained in:
LDj3SNuD 2019-07-08 16:55:37 +02:00 committed by gdkchan
parent 708620252e
commit e5b88de22a
7 changed files with 148 additions and 120 deletions

View file

@ -2206,6 +2206,11 @@ namespace ChocolArm64.Instructions
EmitAddLongPairwise(context, signed: true, accumulate: false);
}
public static void Saddlv_V(ILEmitterCtx context)
{
EmitVectorLongAcrossVectorOpSx(context, () => context.Emit(OpCodes.Add));
}
public static void Saddw_V(ILEmitterCtx context)
{
if (Optimizations.UseSse41)
@ -3041,21 +3046,7 @@ namespace ChocolArm64.Instructions
public static void Uaddlv_V(ILEmitterCtx context)
{
OpCodeSimd64 op = (OpCodeSimd64)context.CurrOp;
int bytes = op.GetBitsCount() >> 3;
int elems = bytes >> op.Size;
EmitVectorExtractZx(context, op.Rn, 0, op.Size);
for (int index = 1; index < elems; index++)
{
EmitVectorExtractZx(context, op.Rn, index, op.Size);
context.Emit(OpCodes.Add);
}
EmitScalarSet(context, op.Rd, op.Size + 1);
EmitVectorLongAcrossVectorOpZx(context, () => context.Emit(OpCodes.Add));
}
public static void Uaddw_V(ILEmitterCtx context)