aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Instructions
diff options
context:
space:
mode:
authorsharmander <saldabain.dev@gmail.com>2022-01-04 14:45:28 -0500
committerGitHub <noreply@github.com>2022-01-04 16:45:28 -0300
commite5f7ff1eee81ebc852b8bc703d5f4847eb430560 (patch)
tree2a98e4e9b4ee40a04454b096fdfcbbfff2c54fff /ARMeilleure/Instructions
parent60f03cb78a4c7b66ee72dbbfee4b1998474a604a (diff)
CPU - Implement FCVTMS (Vector) (#2937)
* Add FCVTMS_V Implementation to Armeilleure * Fix opcode designation * Add tests * Amend Ptc version * Fix OpCode / Tests * Create Math.Floor helper method + Update implementation * Address gdk comments * Re-address gdk comments * Update ARMeilleure/Decoders/OpCodeTable.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Update Tests to use 2S (4S) and 2D Co-authored-by: gdkchan <gab.dark.100@gmail.com>
Diffstat (limited to 'ARMeilleure/Instructions')
-rw-r--r--ARMeilleure/Instructions/InstEmitSimdCvt.cs12
-rw-r--r--ARMeilleure/Instructions/InstName.cs1
2 files changed, 13 insertions, 0 deletions
diff --git a/ARMeilleure/Instructions/InstEmitSimdCvt.cs b/ARMeilleure/Instructions/InstEmitSimdCvt.cs
index a5b472ec..e6400e06 100644
--- a/ARMeilleure/Instructions/InstEmitSimdCvt.cs
+++ b/ARMeilleure/Instructions/InstEmitSimdCvt.cs
@@ -217,6 +217,18 @@ namespace ARMeilleure.Instructions
}
}
+ public static void Fcvtms_V(ArmEmitterContext context)
+ {
+ if (Optimizations.UseSse41)
+ {
+ EmitSse41FcvtsOpF(context, FPRoundingMode.TowardsMinusInfinity, scalar: false);
+ }
+ else
+ {
+ EmitFcvt(context, (op1) => EmitUnaryMathCall(context, nameof(Math.Floor), op1), signed: true, scalar: false);
+ }
+ }
+
public static void Fcvtmu_Gp(ArmEmitterContext context)
{
if (Optimizations.UseSse41)
diff --git a/ARMeilleure/Instructions/InstName.cs b/ARMeilleure/Instructions/InstName.cs
index a9c443f1..081a1ef5 100644
--- a/ARMeilleure/Instructions/InstName.cs
+++ b/ARMeilleure/Instructions/InstName.cs
@@ -188,6 +188,7 @@ namespace ARMeilleure.Instructions
Fcvtau_V,
Fcvtl_V,
Fcvtms_Gp,
+ Fcvtms_V,
Fcvtmu_Gp,
Fcvtn_V,
Fcvtns_S,