diff options
Diffstat (limited to 'ARMeilleure/CodeGen/X86/CodeGenerator.cs')
-rw-r--r-- | ARMeilleure/CodeGen/X86/CodeGenerator.cs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ARMeilleure/CodeGen/X86/CodeGenerator.cs b/ARMeilleure/CodeGen/X86/CodeGenerator.cs index 29a4cd78..5f41ff79 100644 --- a/ARMeilleure/CodeGen/X86/CodeGenerator.cs +++ b/ARMeilleure/CodeGen/X86/CodeGenerator.cs @@ -440,9 +440,12 @@ namespace ARMeilleure.CodeGen.X86 else { EnsureSameReg(dest, src1); + Debug.Assert(src3.GetRegister().Index == 0); + context.Assembler.WriteInstruction(info.Inst, dest, src1, src2); } + break; } @@ -474,11 +477,16 @@ namespace ARMeilleure.CodeGen.X86 Operand src2 = operation.GetSource(1); Operand src3 = operation.GetSource(2); - EnsureSameType(dest, src1, src2, src3); - EnsureSameReg(dest, src1); - Debug.Assert(!dest.Type.IsInteger()); Debug.Assert(HardwareCapabilities.SupportsVexEncoding); + Debug.Assert(dest.Kind == OperandKind.Register && src1.Kind == OperandKind.Register && src2.Kind == OperandKind.Register); + Debug.Assert(src3.Kind == OperandKind.Register || src3.Kind == OperandKind.Memory); + + EnsureSameType(dest, src1, src2, src3); + Debug.Assert(dest.Type == OperandType.V128); + + Debug.Assert(dest.Value == src1.Value); + context.Assembler.WriteInstruction(info.Inst, dest, src2, src3); break; |