| Index: src/assembler_ia32.cpp
|
| diff --git a/src/assembler_ia32.cpp b/src/assembler_ia32.cpp
|
| index f14c21600c7706a7adde246ad6eb1ad2a0e087c9..edfbc3ebf44e17e0033c8850bb1a3665bfd49ca5 100644
|
| --- a/src/assembler_ia32.cpp
|
| +++ b/src/assembler_ia32.cpp
|
| @@ -272,14 +272,30 @@ void AssemblerX8632::lea(Type Ty, GPRRegister dst, const Address &src) {
|
| EmitOperand(dst, src);
|
| }
|
|
|
| -void AssemblerX8632::cmov(CondX86::BrCond cond, GPRRegister dst,
|
| +void AssemblerX8632::cmov(Type Ty, CondX86::BrCond cond, GPRRegister dst,
|
| GPRRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + if (Ty == IceType_i16)
|
| + EmitOperandSizeOverride();
|
| + else
|
| + assert(Ty == IceType_i32);
|
| EmitUint8(0x0F);
|
| EmitUint8(0x40 + cond);
|
| EmitRegisterOperand(dst, src);
|
| }
|
|
|
| +void AssemblerX8632::cmov(Type Ty, CondX86::BrCond cond, GPRRegister dst,
|
| + const Address &src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + if (Ty == IceType_i16)
|
| + EmitOperandSizeOverride();
|
| + else
|
| + assert(Ty == IceType_i32);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x40 + cond);
|
| + EmitOperand(dst, src);
|
| +}
|
| +
|
| void AssemblerX8632::rep_movsb() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xF3);
|
|
|