Update AInstEmitSimdHelper.cs
This commit is contained in:
parent
5e68be0db4
commit
8729a268d2
1 changed files with 10 additions and 23 deletions
|
@ -306,25 +306,19 @@ namespace ChocolArm64.Instruction
|
||||||
|
|
||||||
int SizeF = Op.Size & 1;
|
int SizeF = Op.Size & 1;
|
||||||
|
|
||||||
Context.EmitLdc_I4((int)RoundMode);
|
|
||||||
|
|
||||||
MethodInfo MthdInfo;
|
MethodInfo MthdInfo;
|
||||||
|
|
||||||
Type[] Types = new Type[] { null, typeof(MidpointRounding) };
|
|
||||||
|
|
||||||
Types[0] = SizeF == 0
|
|
||||||
? typeof(float)
|
|
||||||
: typeof(double);
|
|
||||||
|
|
||||||
if (SizeF == 0)
|
if (SizeF == 0)
|
||||||
{
|
{
|
||||||
MthdInfo = typeof(MathF).GetMethod(nameof(MathF.Round), Types);
|
MthdInfo = typeof(MathF).GetMethod(nameof(MathF.Round), new Type[] { typeof(float), typeof(MidpointRounding) });
|
||||||
}
|
}
|
||||||
else /* if (SizeF == 1) */
|
else /* if (SizeF == 1) */
|
||||||
{
|
{
|
||||||
MthdInfo = typeof(Math).GetMethod(nameof(Math.Round), Types);
|
MthdInfo = typeof(Math).GetMethod(nameof(Math.Round), new Type[] { typeof(double), typeof(MidpointRounding) });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Context.EmitLdc_I4((int)RoundMode);
|
||||||
|
|
||||||
Context.EmitCall(MthdInfo);
|
Context.EmitCall(MthdInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,24 +342,17 @@ namespace ChocolArm64.Instruction
|
||||||
Context.EmitCall(MthdInfo);
|
Context.EmitCall(MthdInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EmitBinarySoftFloatCall(AILEmitterCtx Context, string Name)
|
public static void EmitSoftFloatCall(AILEmitterCtx Context, string Name)
|
||||||
{
|
{
|
||||||
IAOpCodeSimd Op = (IAOpCodeSimd)Context.CurrOp;
|
IAOpCodeSimd Op = (IAOpCodeSimd)Context.CurrOp;
|
||||||
|
|
||||||
int SizeF = Op.Size & 1;
|
Type Type = (Op.Size & 1) == 0
|
||||||
|
? typeof(ASoftFloat_32)
|
||||||
|
: typeof(ASoftFloat_64);
|
||||||
|
|
||||||
MethodInfo MthdInfo;
|
Context.EmitLdarg(ATranslatedSub.StateArgIdx);
|
||||||
|
|
||||||
if (SizeF == 0)
|
Context.EmitCall(Type, Name);
|
||||||
{
|
|
||||||
MthdInfo = typeof(ASoftFloat).GetMethod(Name, new Type[] { typeof(float), typeof(float) });
|
|
||||||
}
|
|
||||||
else /* if (SizeF == 1) */
|
|
||||||
{
|
|
||||||
MthdInfo = typeof(ASoftFloat).GetMethod(Name, new Type[] { typeof(double), typeof(double) });
|
|
||||||
}
|
|
||||||
|
|
||||||
Context.EmitCall(MthdInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EmitScalarBinaryOpByElemF(AILEmitterCtx Context, Action Emit)
|
public static void EmitScalarBinaryOpByElemF(AILEmitterCtx Context, Action Emit)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue