diff options
| author | sharmander <saldabain.dev@gmail.com> | 2020-12-07 19:04:01 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-07 21:04:01 -0300 |
| commit | 36f6bbf5b9082193abb33b26e654ce973ed0ee83 (patch) | |
| tree | 449fbcf3c45554acdd1398ad16fdfe649c11ee32 /ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs | |
| parent | 567ea726e173040ae931a37bc85fd6cd92b69363 (diff) | |
CPU: Implement VFNMA.F32 | F.64 (#1783)
* Implement VFNMA.F<32/64>
* Update PTC Version
* Update Implementation & Renames & Correct Order
* Fix alignment
* Update implementation to not trigger assert
* Actually use the intrinsic that makes sense :)
Diffstat (limited to 'ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs')
| -rw-r--r-- | ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs b/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs index 00e32b9f..d72df97c 100644 --- a/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs +++ b/ARMeilleure/Instructions/InstEmitSimdArithmetic32.cs @@ -284,6 +284,21 @@ namespace ARMeilleure.Instructions } } + public static void Vfnma_S(ArmEmitterContext context) // Fused. + { + if (Optimizations.FastFP && Optimizations.UseFma) + { + EmitScalarTernaryOpF32(context, Intrinsic.X86Vfnmsub231ss, Intrinsic.X86Vfnmsub231sd); + } + else + { + EmitScalarTernaryOpF32(context, (op1, op2, op3) => + { + return EmitSoftFloatCall(context, nameof(SoftFloat32.FPMulAdd), context.Negate(op1), context.Negate(op2), op3); + }); + } + } + public static void Vfnms_S(ArmEmitterContext context) // Fused. { if (Optimizations.FastFP && Optimizations.UseFma) |
