| Index: src/assembler_ia32.cpp
|
| diff --git a/src/assembler_ia32.cpp b/src/assembler_ia32.cpp
|
| index 6bcbb9aad95551e8ff378272fecfb73db6afd24d..a58bbd9d30cc474c7cd10e8580e13ce7606f129f 100644
|
| --- a/src/assembler_ia32.cpp
|
| +++ b/src/assembler_ia32.cpp
|
| @@ -272,25 +272,25 @@ void AssemblerX86::rep_movsb() {
|
| EmitUint8(0xA4);
|
| }
|
|
|
| -void AssemblerX86::movss(XmmRegister dst, const Address &src) {
|
| +void AssemblerX86::movss(Type Ty, XmmRegister dst, const Address &src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xF3);
|
| + EmitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
|
| EmitUint8(0x0F);
|
| EmitUint8(0x10);
|
| EmitOperand(dst, src);
|
| }
|
|
|
| -void AssemblerX86::movss(const Address &dst, XmmRegister src) {
|
| +void AssemblerX86::movss(Type Ty, const Address &dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xF3);
|
| + EmitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
|
| EmitUint8(0x0F);
|
| EmitUint8(0x11);
|
| EmitOperand(src, dst);
|
| }
|
|
|
| -void AssemblerX86::movss(XmmRegister dst, XmmRegister src) {
|
| +void AssemblerX86::movss(Type Ty, XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xF3);
|
| + EmitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
|
| EmitUint8(0x0F);
|
| EmitUint8(0x11);
|
| EmitXmmRegisterOperand(src, dst);
|
| @@ -416,40 +416,22 @@ void AssemblerX86::divss(Type Ty, XmmRegister dst, const Address &src) {
|
| EmitOperand(dst, src);
|
| }
|
|
|
| -void AssemblerX86::flds(const Address &src) {
|
| +void AssemblerX86::fld(Type Ty, const Address &src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xD9);
|
| + EmitUint8(isFloat32Asserting32Or64(Ty) ? 0xD9 : 0xDD);
|
| EmitOperand(0, src);
|
| }
|
|
|
| -void AssemblerX86::fstps(const Address &dst) {
|
| +void AssemblerX86::fstp(Type Ty, const Address &dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xD9);
|
| + EmitUint8(isFloat32Asserting32Or64(Ty) ? 0xD9 : 0xDD);
|
| EmitOperand(3, dst);
|
| }
|
|
|
| -void AssemblerX86::movsd(XmmRegister dst, const Address &src) {
|
| +void AssemblerX86::fstp(X87STRegister st) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xF2);
|
| - EmitUint8(0x0F);
|
| - EmitUint8(0x10);
|
| - EmitOperand(dst, src);
|
| -}
|
| -
|
| -void AssemblerX86::movsd(const Address &dst, XmmRegister src) {
|
| - AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xF2);
|
| - EmitUint8(0x0F);
|
| - EmitUint8(0x11);
|
| - EmitOperand(src, dst);
|
| -}
|
| -
|
| -void AssemblerX86::movsd(XmmRegister dst, XmmRegister src) {
|
| - AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xF2);
|
| - EmitUint8(0x0F);
|
| - EmitUint8(0x11);
|
| - EmitXmmRegisterOperand(src, dst);
|
| + EmitUint8(0xDD);
|
| + EmitUint8(0xD8 + st);
|
| }
|
|
|
| void AssemblerX86::movaps(XmmRegister dst, XmmRegister src) {
|
| @@ -1238,18 +1220,6 @@ void AssemblerX86::roundsd(XmmRegister dst, XmmRegister src,
|
| EmitUint8(static_cast<uint8_t>(mode) | 0x8);
|
| }
|
|
|
| -void AssemblerX86::fldl(const Address &src) {
|
| - AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xDD);
|
| - EmitOperand(0, src);
|
| -}
|
| -
|
| -void AssemblerX86::fstpl(const Address &dst) {
|
| - AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| - EmitUint8(0xDD);
|
| - EmitOperand(3, dst);
|
| -}
|
| -
|
| void AssemblerX86::fnstcw(const Address &dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xD9);
|
|
|