| Index: src/ia32/assembler-ia32.cc
|
| ===================================================================
|
| --- src/ia32/assembler-ia32.cc (revision 3964)
|
| +++ src/ia32/assembler-ia32.cc (working copy)
|
| @@ -753,6 +753,13 @@
|
| }
|
|
|
|
|
| +void Assembler::cld() {
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0xFC);
|
| +}
|
| +
|
| +
|
| void Assembler::rep_movs() {
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
| @@ -761,6 +768,14 @@
|
| }
|
|
|
|
|
| +void Assembler::rep_stos() {
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0xF3);
|
| + EMIT(0xAB);
|
| +}
|
| +
|
| +
|
| void Assembler::xchg(Register dst, Register src) {
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
| @@ -2035,6 +2050,17 @@
|
| }
|
|
|
|
|
| +void Assembler::cvtss2sd(XMMRegister dst, XMMRegister src) {
|
| + ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0xF3);
|
| + EMIT(0x0F);
|
| + EMIT(0x5A);
|
| + emit_sse_operand(dst, src);
|
| +}
|
| +
|
| +
|
| void Assembler::addsd(XMMRegister dst, XMMRegister src) {
|
| ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| EnsureSpace ensure_space(this);
|
| @@ -2090,6 +2116,16 @@
|
| }
|
|
|
|
|
| +void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) {
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0xF2);
|
| + EMIT(0x0F);
|
| + EMIT(0x51);
|
| + emit_sse_operand(dst, src);
|
| +}
|
| +
|
| +
|
| void Assembler::comisd(XMMRegister dst, XMMRegister src) {
|
| ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| EnsureSpace ensure_space(this);
|
| @@ -2101,6 +2137,17 @@
|
| }
|
|
|
|
|
| +void Assembler::ucomisd(XMMRegister dst, XMMRegister src) {
|
| + ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0x66);
|
| + EMIT(0x0F);
|
| + EMIT(0x2E);
|
| + emit_sse_operand(dst, src);
|
| +}
|
| +
|
| +
|
| void Assembler::movdqa(const Operand& dst, XMMRegister src ) {
|
| ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| EnsureSpace ensure_space(this);
|
| @@ -2180,7 +2227,51 @@
|
| emit_sse_operand(dst, src);
|
| }
|
|
|
| +void Assembler::movsd(XMMRegister dst, XMMRegister src) {
|
| + ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0xF2);
|
| + EMIT(0x0F);
|
| + EMIT(0x10);
|
| + emit_sse_operand(dst, src);
|
| +}
|
|
|
| +
|
| +void Assembler::movd(XMMRegister dst, const Operand& src) {
|
| + ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0x66);
|
| + EMIT(0x0F);
|
| + EMIT(0x6E);
|
| + emit_sse_operand(dst, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::pxor(XMMRegister dst, XMMRegister src) {
|
| + ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0x66);
|
| + EMIT(0x0F);
|
| + EMIT(0xEF);
|
| + emit_sse_operand(dst, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::ptest(XMMRegister dst, XMMRegister src) {
|
| + ASSERT(CpuFeatures::IsEnabled(SSE2));
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + EMIT(0x66);
|
| + EMIT(0x0F);
|
| + EMIT(0x38);
|
| + EMIT(0x17);
|
| + emit_sse_operand(dst, src);
|
| +}
|
| +
|
| +
|
| void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) {
|
| Register ireg = { reg.code() };
|
| emit_operand(ireg, adr);
|
|
|