diff options
author | LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com> | 2019-11-10 03:21:03 +0100 |
---|---|---|
committer | gdkchan <gab.dark.100@gmail.com> | 2019-11-09 23:21:03 -0300 |
commit | eefe2b20fceb56da2b4507717108b80d935cfc2e (patch) | |
tree | bdaa2ca3c676e4cafc02e6ecc551c81b77c8b79c /ARMeilleure/CodeGen/X86/CodeGenerator.cs | |
parent | 2ea8d5bd5ffd564f0c28b96846c3c3865adc93e2 (diff) |
Fix Fcmge_S/V & Fcmgt_S/V Inst.s (#815)
* Fix Fcmge_S/V & Fcmgt_S/V.
Follow-up Fcm**_S/V & Fc*mp*_S.
Improve CmpCondition enum.
Nits.
* Optimize Fccmp*_S & Fcmp*_S.
* Fix cvtsd2si opcode.
* Address PR feedback.
Diffstat (limited to 'ARMeilleure/CodeGen/X86/CodeGenerator.cs')
-rw-r--r-- | ARMeilleure/CodeGen/X86/CodeGenerator.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/ARMeilleure/CodeGen/X86/CodeGenerator.cs b/ARMeilleure/CodeGen/X86/CodeGenerator.cs index ae24b563..33fc2aee 100644 --- a/ARMeilleure/CodeGen/X86/CodeGenerator.cs +++ b/ARMeilleure/CodeGen/X86/CodeGenerator.cs @@ -265,7 +265,21 @@ namespace ARMeilleure.CodeGen.X86 Debug.Assert(dest.Type.IsInteger() && !source.Type.IsInteger()); - context.Assembler.WriteInstruction(info.Inst, dest, source, dest.Type); + if (intrinOp.Intrinsic == Intrinsic.X86Cvtsi2si) + { + if (dest.Type == OperandType.I32) + { + context.Assembler.Movd(dest, source); // int _mm_cvtsi128_si32 + } + else /* if (dest.Type == OperandType.I64) */ + { + context.Assembler.Movq(dest, source); // __int64 _mm_cvtsi128_si64 + } + } + else + { + context.Assembler.WriteInstruction(info.Inst, dest, source, dest.Type); + } break; } |