mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2025-07-01 10:30:47 -07:00
Add Smaxv_V, Sminv_V, Umaxv_V, Uminv_V Inst.; add Tests. (#691)
* Update InstEmitSimdHelper.cs * Update InstEmitSimdArithmetic.cs * Update OpCodeTable.cs * Update CpuTestSimd.cs
This commit is contained in:
@ -821,6 +821,35 @@ namespace ChocolArm64.Instructions
|
||||
}
|
||||
}
|
||||
|
||||
public static void EmitVectorAcrossVectorOpSx(ILEmitterCtx context, Action emit)
|
||||
{
|
||||
EmitVectorAcrossVectorOp(context, emit, true);
|
||||
}
|
||||
|
||||
public static void EmitVectorAcrossVectorOpZx(ILEmitterCtx context, Action emit)
|
||||
{
|
||||
EmitVectorAcrossVectorOp(context, emit, false);
|
||||
}
|
||||
|
||||
public static void EmitVectorAcrossVectorOp(ILEmitterCtx context, Action emit, bool signed)
|
||||
{
|
||||
OpCodeSimd64 op = (OpCodeSimd64)context.CurrOp;
|
||||
|
||||
int bytes = op.GetBitsCount() >> 3;
|
||||
int elems = bytes >> op.Size;
|
||||
|
||||
EmitVectorExtract(context, op.Rn, 0, op.Size, signed);
|
||||
|
||||
for (int index = 1; index < elems; index++)
|
||||
{
|
||||
EmitVectorExtract(context, op.Rn, index, op.Size, signed);
|
||||
|
||||
emit();
|
||||
}
|
||||
|
||||
EmitScalarSet(context, op.Rd, op.Size);
|
||||
}
|
||||
|
||||
public static void EmitVectorPairwiseOpF(ILEmitterCtx context, Action emit)
|
||||
{
|
||||
OpCodeSimdReg64 op = (OpCodeSimdReg64)context.CurrOp;
|
||||
|
Reference in New Issue
Block a user