aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Instruction/AInstEmitSimdHelper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ChocolArm64/Instruction/AInstEmitSimdHelper.cs')
-rw-r--r--ChocolArm64/Instruction/AInstEmitSimdHelper.cs32
1 files changed, 13 insertions, 19 deletions
diff --git a/ChocolArm64/Instruction/AInstEmitSimdHelper.cs b/ChocolArm64/Instruction/AInstEmitSimdHelper.cs
index 20c8be26..68ee3d3e 100644
--- a/ChocolArm64/Instruction/AInstEmitSimdHelper.cs
+++ b/ChocolArm64/Instruction/AInstEmitSimdHelper.cs
@@ -36,20 +36,18 @@ namespace ChocolArm64.Instruction
{
IAOpCodeSimd Op = (IAOpCodeSimd)Context.CurrOp;
+ int SizeF = Op.Size & 1;
+
MethodInfo MthdInfo;
- if (Op.Size == 0)
+ if (SizeF == 0)
{
MthdInfo = typeof(MathF).GetMethod(Name, new Type[] { typeof(float) });
}
- else if (Op.Size == 1)
+ else /* if (SizeF == 1) */
{
MthdInfo = typeof(Math).GetMethod(Name, new Type[] { typeof(double) });
}
- else
- {
- throw new InvalidOperationException();
- }
Context.EmitCall(MthdInfo);
}
@@ -58,20 +56,18 @@ namespace ChocolArm64.Instruction
{
IAOpCodeSimd Op = (IAOpCodeSimd)Context.CurrOp;
+ int SizeF = Op.Size & 1;
+
MethodInfo MthdInfo;
- if (Op.Size == 0)
+ if (SizeF == 0)
{
MthdInfo = typeof(MathF).GetMethod(Name, new Type[] { typeof(float), typeof(float) });
}
- else if (Op.Size == 1)
+ else /* if (SizeF == 1) */
{
MthdInfo = typeof(Math).GetMethod(Name, new Type[] { typeof(double), typeof(double) });
}
- else
- {
- throw new InvalidOperationException();
- }
Context.EmitCall(MthdInfo);
}
@@ -80,28 +76,26 @@ namespace ChocolArm64.Instruction
{
IAOpCodeSimd Op = (IAOpCodeSimd)Context.CurrOp;
+ int SizeF = Op.Size & 1;
+
Context.EmitLdc_I4((int)RoundMode);
MethodInfo MthdInfo;
Type[] Types = new Type[] { null, typeof(MidpointRounding) };
- Types[0] = Op.Size == 0
+ Types[0] = SizeF == 0
? typeof(float)
: typeof(double);
- if (Op.Size == 0)
+ if (SizeF == 0)
{
MthdInfo = typeof(MathF).GetMethod(nameof(MathF.Round), Types);
}
- else if (Op.Size == 1)
+ else /* if (SizeF == 1) */
{
MthdInfo = typeof(Math).GetMethod(nameof(Math.Round), Types);
}
- else
- {
- throw new InvalidOperationException();
- }
Context.EmitCall(MthdInfo);
}