Add FMLS (vector) instruction
This commit is contained in:
parent
2fd718c163
commit
36d9130592
3 changed files with 20 additions and 20 deletions
|
@ -213,6 +213,8 @@ namespace ChocolArm64
|
||||||
Set("000111100x1xxxxx011110xxxxxxxxxx", AInstEmit.Fminnm_S, typeof(AOpCodeSimdReg));
|
Set("000111100x1xxxxx011110xxxxxxxxxx", AInstEmit.Fminnm_S, typeof(AOpCodeSimdReg));
|
||||||
Set("0>0011100<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmla_V, typeof(AOpCodeSimdReg));
|
Set("0>0011100<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmla_V, typeof(AOpCodeSimdReg));
|
||||||
Set("0x0011111<<xxxxx0001x0xxxxxxxxxx", AInstEmit.Fmla_Ve, typeof(AOpCodeSimdRegElemF));
|
Set("0x0011111<<xxxxx0001x0xxxxxxxxxx", AInstEmit.Fmla_Ve, typeof(AOpCodeSimdRegElemF));
|
||||||
|
Set("0>0011101<1xxxxx110011xxxxxxxxxx", AInstEmit.Fmls_V, typeof(AOpCodeSimdReg));
|
||||||
|
Set("0x0011111<<xxxxx0101x0xxxxxxxxxx", AInstEmit.Fmls_Ve, typeof(AOpCodeSimdRegElemF));
|
||||||
Set("000111100x100000010000xxxxxxxxxx", AInstEmit.Fmov_S, typeof(AOpCodeSimd));
|
Set("000111100x100000010000xxxxxxxxxx", AInstEmit.Fmov_S, typeof(AOpCodeSimd));
|
||||||
Set("00011110xx1xxxxxxxx100xxxxxxxxxx", AInstEmit.Fmov_Si, typeof(AOpCodeSimdFmov));
|
Set("00011110xx1xxxxxxxx100xxxxxxxxxx", AInstEmit.Fmov_Si, typeof(AOpCodeSimdFmov));
|
||||||
Set("0xx0111100000xxx111101xxxxxxxxxx", AInstEmit.Fmov_V, typeof(AOpCodeSimdImm));
|
Set("0xx0111100000xxx111101xxxxxxxxxx", AInstEmit.Fmov_V, typeof(AOpCodeSimdImm));
|
||||||
|
|
|
@ -224,6 +224,24 @@ namespace ChocolArm64.Instruction
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Fmls_V(AILEmitterCtx Context)
|
||||||
|
{
|
||||||
|
EmitVectorTernaryOpF(Context, () =>
|
||||||
|
{
|
||||||
|
Context.Emit(OpCodes.Mul);
|
||||||
|
Context.Emit(OpCodes.Sub);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Fmls_Ve(AILEmitterCtx Context)
|
||||||
|
{
|
||||||
|
EmitVectorTernaryOpByElemF(Context, () =>
|
||||||
|
{
|
||||||
|
Context.Emit(OpCodes.Mul);
|
||||||
|
Context.Emit(OpCodes.Sub);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static void Fmsub_S(AILEmitterCtx Context)
|
public static void Fmsub_S(AILEmitterCtx Context)
|
||||||
{
|
{
|
||||||
EmitScalarTernaryRaOpF(Context, () =>
|
EmitScalarTernaryRaOpF(Context, () =>
|
||||||
|
|
|
@ -140,26 +140,6 @@ namespace ChocolArm64.Instruction
|
||||||
EmitVectorFcmp(Context, OpCodes.Bgt_S);
|
EmitVectorFcmp(Context, OpCodes.Bgt_S);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Fcmhi_S(AILEmitterCtx Context)
|
|
||||||
{
|
|
||||||
EmitScalarFcmp(Context, OpCodes.Bgt_Un_S);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Fcmhi_V(AILEmitterCtx Context)
|
|
||||||
{
|
|
||||||
EmitVectorFcmp(Context, OpCodes.Bgt_Un_S);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Fcmhs_S(AILEmitterCtx Context)
|
|
||||||
{
|
|
||||||
EmitScalarFcmp(Context, OpCodes.Bge_Un_S);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Fcmhs_V(AILEmitterCtx Context)
|
|
||||||
{
|
|
||||||
EmitVectorFcmp(Context, OpCodes.Bge_Un_S);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Fcmle_S(AILEmitterCtx Context)
|
public static void Fcmle_S(AILEmitterCtx Context)
|
||||||
{
|
{
|
||||||
EmitScalarFcmp(Context, OpCodes.Ble_S);
|
EmitScalarFcmp(Context, OpCodes.Ble_S);
|
||||||
|
|
Reference in a new issue