diff options
Diffstat (limited to 'deps/v8/src/ia32/assembler-ia32.cc')
-rw-r--r-- | deps/v8/src/ia32/assembler-ia32.cc | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/deps/v8/src/ia32/assembler-ia32.cc b/deps/v8/src/ia32/assembler-ia32.cc index ffcefe0b56..f13556bd7a 100644 --- a/deps/v8/src/ia32/assembler-ia32.cc +++ b/deps/v8/src/ia32/assembler-ia32.cc @@ -753,6 +753,13 @@ void Assembler::cmov(Condition cc, Register dst, const Operand& src) { } +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_movs() { } +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_; @@ -1637,6 +1652,13 @@ void Assembler::fld(int i) { } +void Assembler::fstp(int i) { + EnsureSpace ensure_space(this); + last_pc_ = pc_; + emit_farith(0xDD, 0xD8, i); +} + + void Assembler::fld1() { EnsureSpace ensure_space(this); last_pc_ = pc_; @@ -1645,6 +1667,14 @@ void Assembler::fld1() { } +void Assembler::fldpi() { + EnsureSpace ensure_space(this); + last_pc_ = pc_; + EMIT(0xD9); + EMIT(0xEB); +} + + void Assembler::fldz() { EnsureSpace ensure_space(this); last_pc_ = pc_; @@ -1685,6 +1715,14 @@ void Assembler::fstp_d(const Operand& adr) { } +void Assembler::fst_d(const Operand& adr) { + EnsureSpace ensure_space(this); + last_pc_ = pc_; + EMIT(0xDD); + emit_operand(edx, adr); +} + + void Assembler::fild_s(const Operand& adr) { EnsureSpace ensure_space(this); last_pc_ = pc_; @@ -2012,6 +2050,17 @@ void Assembler::cvtsi2sd(XMMRegister dst, const Operand& src) { } +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); @@ -2067,6 +2116,16 @@ void Assembler::xorpd(XMMRegister dst, XMMRegister src) { } +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); @@ -2078,6 +2137,17 @@ void Assembler::comisd(XMMRegister dst, XMMRegister src) { } +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); @@ -2157,6 +2227,50 @@ void Assembler::movsd(XMMRegister dst, const Operand& src) { 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() }; |