forked from Mirror/Ryujinx
Add FRINTM (vector) instruction
This commit is contained in:
parent
aa2d2b3149
commit
30bcb8da33
3 changed files with 14 additions and 0 deletions
|
@ -200,6 +200,7 @@ namespace ChocolArm64
|
||||||
Set("000111100x1xxxxx100010xxxxxxxxxx", AInstEmit.Fnmul_S, typeof(AOpCodeSimdReg));
|
Set("000111100x1xxxxx100010xxxxxxxxxx", AInstEmit.Fnmul_S, typeof(AOpCodeSimdReg));
|
||||||
Set("000111100x100110010000xxxxxxxxxx", AInstEmit.Frinta_S, typeof(AOpCodeSimd));
|
Set("000111100x100110010000xxxxxxxxxx", AInstEmit.Frinta_S, typeof(AOpCodeSimd));
|
||||||
Set("000111100x100101010000xxxxxxxxxx", AInstEmit.Frintm_S, typeof(AOpCodeSimd));
|
Set("000111100x100101010000xxxxxxxxxx", AInstEmit.Frintm_S, typeof(AOpCodeSimd));
|
||||||
|
Set("0>0011100<100001100110xxxxxxxxxx", AInstEmit.Frintm_V, typeof(AOpCodeSimd));
|
||||||
Set("000111100x100100110000xxxxxxxxxx", AInstEmit.Frintp_S, typeof(AOpCodeSimd));
|
Set("000111100x100100110000xxxxxxxxxx", AInstEmit.Frintp_S, typeof(AOpCodeSimd));
|
||||||
Set("000111100x100111010000xxxxxxxxxx", AInstEmit.Frintx_S, typeof(AOpCodeSimd));
|
Set("000111100x100111010000xxxxxxxxxx", AInstEmit.Frintx_S, typeof(AOpCodeSimd));
|
||||||
Set("000111100x100001110000xxxxxxxxxx", AInstEmit.Fsqrt_S, typeof(AOpCodeSimd));
|
Set("000111100x100001110000xxxxxxxxxx", AInstEmit.Fsqrt_S, typeof(AOpCodeSimd));
|
||||||
|
|
|
@ -267,6 +267,14 @@ namespace ChocolArm64.Instruction
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Frintm_V(AILEmitterCtx Context)
|
||||||
|
{
|
||||||
|
EmitVectorUnaryOpF(Context, () =>
|
||||||
|
{
|
||||||
|
EmitUnaryMathCall(Context, nameof(Math.Floor));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static void Frintp_S(AILEmitterCtx Context)
|
public static void Frintp_S(AILEmitterCtx Context)
|
||||||
{
|
{
|
||||||
EmitScalarUnaryOpF(Context, () =>
|
EmitScalarUnaryOpF(Context, () =>
|
||||||
|
|
|
@ -190,6 +190,11 @@ namespace ChocolArm64.Instruction
|
||||||
EmitScalarSetF(Context, Op.Rd, SizeF);
|
EmitScalarSetF(Context, Op.Rd, SizeF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void EmitVectorUnaryOpF(AILEmitterCtx Context, Action Emit)
|
||||||
|
{
|
||||||
|
EmitVectorOpF(Context, Emit, OperFlags.Rn);
|
||||||
|
}
|
||||||
|
|
||||||
public static void EmitVectorBinaryOpF(AILEmitterCtx Context, Action Emit)
|
public static void EmitVectorBinaryOpF(AILEmitterCtx Context, Action Emit)
|
||||||
{
|
{
|
||||||
EmitVectorOpF(Context, Emit, OperFlags.RnRm);
|
EmitVectorOpF(Context, Emit, OperFlags.RnRm);
|
||||||
|
|
Reference in a new issue