mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-01-09 20:29:11 +00:00
Implement Fminnm_V & Fmls_Se & Smov
This commit is contained in:
parent
6479c3e484
commit
f68c8107a6
3 changed files with 26 additions and 0 deletions
|
@ -271,9 +271,11 @@ namespace ChocolArm64
|
||||||
SetA64("000111100x1xxxxx010110xxxxxxxxxx", AInstEmit.Fmin_S, typeof(AOpCodeSimdReg));
|
SetA64("000111100x1xxxxx010110xxxxxxxxxx", AInstEmit.Fmin_S, typeof(AOpCodeSimdReg));
|
||||||
SetA64("0x0011101x1xxxxx111101xxxxxxxxxx", AInstEmit.Fmin_V, typeof(AOpCodeSimdReg));
|
SetA64("0x0011101x1xxxxx111101xxxxxxxxxx", AInstEmit.Fmin_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("000111100x1xxxxx011110xxxxxxxxxx", AInstEmit.Fminnm_S, typeof(AOpCodeSimdReg));
|
SetA64("000111100x1xxxxx011110xxxxxxxxxx", AInstEmit.Fminnm_S, typeof(AOpCodeSimdReg));
|
||||||
|
SetA64("0x0011101x1xxxxx110001xxxxxxxxxx", AInstEmit.Fminnm_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("010111111<<xxxxx0001x0xxxxxxxxxx", AInstEmit.Fmla_Se, typeof(AOpCodeSimdRegElemF));
|
SetA64("010111111<<xxxxx0001x0xxxxxxxxxx", AInstEmit.Fmla_Se, typeof(AOpCodeSimdRegElemF));
|
||||||
SetA64("0>0011100<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmla_V, typeof(AOpCodeSimdReg));
|
SetA64("0>0011100<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmla_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("0x0011111<<xxxxx0001x0xxxxxxxxxx", AInstEmit.Fmla_Ve, typeof(AOpCodeSimdRegElemF));
|
SetA64("0x0011111<<xxxxx0001x0xxxxxxxxxx", AInstEmit.Fmla_Ve, typeof(AOpCodeSimdRegElemF));
|
||||||
|
SetA64("010111111<<xxxxx0101x0xxxxxxxxxx", AInstEmit.Fmls_Se, typeof(AOpCodeSimdRegElemF));
|
||||||
SetA64("0>0011101<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmls_V, typeof(AOpCodeSimdReg));
|
SetA64("0>0011101<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmls_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("0x0011111<<xxxxx0101x0xxxxxxxxxx", AInstEmit.Fmls_Ve, typeof(AOpCodeSimdRegElemF));
|
SetA64("0x0011111<<xxxxx0101x0xxxxxxxxxx", AInstEmit.Fmls_Ve, typeof(AOpCodeSimdRegElemF));
|
||||||
SetA64("000111100x100000010000xxxxxxxxxx", AInstEmit.Fmov_S, typeof(AOpCodeSimd));
|
SetA64("000111100x100000010000xxxxxxxxxx", AInstEmit.Fmov_S, typeof(AOpCodeSimd));
|
||||||
|
@ -371,6 +373,7 @@ namespace ChocolArm64
|
||||||
SetA64("0x001110<<1xxxxx011011xxxxxxxxxx", AInstEmit.Smin_V, typeof(AOpCodeSimdReg));
|
SetA64("0x001110<<1xxxxx011011xxxxxxxxxx", AInstEmit.Smin_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("0x001110<<1xxxxx101011xxxxxxxxxx", AInstEmit.Sminp_V, typeof(AOpCodeSimdReg));
|
SetA64("0x001110<<1xxxxx101011xxxxxxxxxx", AInstEmit.Sminp_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("0x001110<<1xxxxx100000xxxxxxxxxx", AInstEmit.Smlal_V, typeof(AOpCodeSimdReg));
|
SetA64("0x001110<<1xxxxx100000xxxxxxxxxx", AInstEmit.Smlal_V, typeof(AOpCodeSimdReg));
|
||||||
|
SetA64("0x001110000xxxxx001011xxxxxxxxxx", AInstEmit.Smov, typeof(AOpCodeSimdIns));
|
||||||
SetA64("0x001110<<1xxxxx110000xxxxxxxxxx", AInstEmit.Smull_V, typeof(AOpCodeSimdReg));
|
SetA64("0x001110<<1xxxxx110000xxxxxxxxxx", AInstEmit.Smull_V, typeof(AOpCodeSimdReg));
|
||||||
SetA64("01011110<<100001010010xxxxxxxxxx", AInstEmit.Sqxtn_S, typeof(AOpCodeSimd));
|
SetA64("01011110<<100001010010xxxxxxxxxx", AInstEmit.Sqxtn_S, typeof(AOpCodeSimd));
|
||||||
SetA64("0x001110<<100001010010xxxxxxxxxx", AInstEmit.Sqxtn_V, typeof(AOpCodeSimd));
|
SetA64("0x001110<<100001010010xxxxxxxxxx", AInstEmit.Sqxtn_V, typeof(AOpCodeSimd));
|
||||||
|
|
|
@ -493,6 +493,11 @@ namespace ChocolArm64.Instruction
|
||||||
Fmin_S(Context);
|
Fmin_S(Context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Fminnm_V(AILEmitterCtx Context)
|
||||||
|
{
|
||||||
|
Fmin_V(Context);
|
||||||
|
}
|
||||||
|
|
||||||
public static void Fmla_Se(AILEmitterCtx Context)
|
public static void Fmla_Se(AILEmitterCtx Context)
|
||||||
{
|
{
|
||||||
EmitScalarTernaryOpByElemF(Context, () =>
|
EmitScalarTernaryOpByElemF(Context, () =>
|
||||||
|
@ -520,6 +525,15 @@ namespace ChocolArm64.Instruction
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Fmls_Se(AILEmitterCtx Context)
|
||||||
|
{
|
||||||
|
EmitScalarTernaryOpByElemF(Context, () =>
|
||||||
|
{
|
||||||
|
Context.Emit(OpCodes.Mul);
|
||||||
|
Context.Emit(OpCodes.Add);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static void Fmls_V(AILEmitterCtx Context)
|
public static void Fmls_V(AILEmitterCtx Context)
|
||||||
{
|
{
|
||||||
EmitVectorTernaryOpF(Context, () =>
|
EmitVectorTernaryOpF(Context, () =>
|
||||||
|
|
|
@ -221,6 +221,15 @@ namespace ChocolArm64.Instruction
|
||||||
EmitVectorImmUnaryOp(Context, () => Context.Emit(OpCodes.Not));
|
EmitVectorImmUnaryOp(Context, () => Context.Emit(OpCodes.Not));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Smov(AILEmitterCtx Context)
|
||||||
|
{
|
||||||
|
AOpCodeSimdIns Op = (AOpCodeSimdIns)Context.CurrOp;
|
||||||
|
|
||||||
|
EmitVectorExtractSx(Context, Op.Rn, Op.DstIndex, Op.Size);
|
||||||
|
|
||||||
|
Context.EmitStintzr(Op.Rd);
|
||||||
|
}
|
||||||
|
|
||||||
public static void Tbl_V(AILEmitterCtx Context)
|
public static void Tbl_V(AILEmitterCtx Context)
|
||||||
{
|
{
|
||||||
AOpCodeSimdTbl Op = (AOpCodeSimdTbl)Context.CurrOp;
|
AOpCodeSimdTbl Op = (AOpCodeSimdTbl)Context.CurrOp;
|
||||||
|
|
Loading…
Reference in a new issue