| Index: src/ia32/assembler-ia32.cc | 
| diff --git a/src/ia32/assembler-ia32.cc b/src/ia32/assembler-ia32.cc | 
| index 24c6b9262961a7da2d22cc7f176fdda212360db3..733432028af7d1fec81f39186e3d106f22ef044e 100644 | 
| --- a/src/ia32/assembler-ia32.cc | 
| +++ b/src/ia32/assembler-ia32.cc | 
| @@ -89,8 +89,6 @@ const char* IntelDoubleRegister::AllocationIndexToString(int index) { | 
| } | 
|  | 
|  | 
| -// The Probe method needs executable memory, so it uses Heap::CreateCode. | 
| -// Allocation failure is silent and leads to safe default. | 
| void CpuFeatures::Probe() { | 
| ASSERT(!initialized_); | 
| ASSERT(supported_ == 0); | 
| @@ -2069,7 +2067,8 @@ void Assembler::xorpd(XMMRegister dst, XMMRegister src) { | 
| } | 
|  | 
|  | 
| -void Assembler::andps(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::andps(XMMRegister dst, const Operand& src) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| EMIT(0x0F); | 
| EMIT(0x54); | 
| @@ -2077,7 +2076,8 @@ void Assembler::andps(XMMRegister dst, XMMRegister src) { | 
| } | 
|  | 
|  | 
| -void Assembler::orps(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::orps(XMMRegister dst, const Operand& src) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| EMIT(0x0F); | 
| EMIT(0x56); | 
| @@ -2085,7 +2085,8 @@ void Assembler::orps(XMMRegister dst, XMMRegister src) { | 
| } | 
|  | 
|  | 
| -void Assembler::xorps(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::xorps(XMMRegister dst, const Operand& src) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| EMIT(0x0F); | 
| EMIT(0x57); | 
| @@ -2093,42 +2094,68 @@ void Assembler::xorps(XMMRegister dst, XMMRegister src) { | 
| } | 
|  | 
|  | 
| -void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::addps(XMMRegister dst, const Operand& src) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| -  EMIT(0xF2); | 
| EMIT(0x0F); | 
| -  EMIT(0x51); | 
| +  EMIT(0x58); | 
| emit_sse_operand(dst, src); | 
| } | 
|  | 
|  | 
| -void Assembler::andpd(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::subps(XMMRegister dst, const Operand& src) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| -  EMIT(0x66); | 
| EMIT(0x0F); | 
| -  EMIT(0x54); | 
| +  EMIT(0x5C); | 
| emit_sse_operand(dst, src); | 
| } | 
|  | 
|  | 
| -void Assembler::orpd(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::mulps(XMMRegister dst, const Operand& src) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| +  EnsureSpace ensure_space(this); | 
| +  EMIT(0x0F); | 
| +  EMIT(0x59); | 
| +  emit_sse_operand(dst, src); | 
| +} | 
| + | 
| + | 
| +void Assembler::divps(XMMRegister dst, const Operand& src) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| +  EnsureSpace ensure_space(this); | 
| +  EMIT(0x0F); | 
| +  EMIT(0x5E); | 
| +  emit_sse_operand(dst, src); | 
| +} | 
| + | 
| + | 
| +void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| +  EnsureSpace ensure_space(this); | 
| +  EMIT(0xF2); | 
| +  EMIT(0x0F); | 
| +  EMIT(0x51); | 
| +  emit_sse_operand(dst, src); | 
| +} | 
| + | 
| + | 
| +void Assembler::andpd(XMMRegister dst, XMMRegister src) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| EMIT(0x66); | 
| EMIT(0x0F); | 
| -  EMIT(0x56); | 
| +  EMIT(0x54); | 
| emit_sse_operand(dst, src); | 
| } | 
|  | 
|  | 
| -void Assembler::ucomisd(XMMRegister dst, XMMRegister src) { | 
| +void Assembler::orpd(XMMRegister dst, XMMRegister src) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| EMIT(0x66); | 
| EMIT(0x0F); | 
| -  EMIT(0x2E); | 
| +  EMIT(0x56); | 
| emit_sse_operand(dst, src); | 
| } | 
|  | 
| @@ -2205,6 +2232,17 @@ void Assembler::movaps(XMMRegister dst, XMMRegister src) { | 
| } | 
|  | 
|  | 
| +void Assembler::shufps(XMMRegister dst, XMMRegister src, byte imm8) { | 
| +  ASSERT(IsEnabled(SSE2)); | 
| +  ASSERT(is_uint8(imm8)); | 
| +  EnsureSpace ensure_space(this); | 
| +  EMIT(0x0F); | 
| +  EMIT(0xC6); | 
| +  emit_sse_operand(dst, src); | 
| +  EMIT(imm8); | 
| +} | 
| + | 
| + | 
| void Assembler::movdqa(const Operand& dst, XMMRegister src) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| @@ -2297,16 +2335,6 @@ void Assembler::movsd(XMMRegister dst, const Operand& src) { | 
| } | 
|  | 
|  | 
| -void Assembler::movsd(XMMRegister dst, XMMRegister src) { | 
| -  ASSERT(IsEnabled(SSE2)); | 
| -  EnsureSpace ensure_space(this); | 
| -  EMIT(0xF2); | 
| -  EMIT(0x0F); | 
| -  EMIT(0x10); | 
| -  emit_sse_operand(dst, src); | 
| -} | 
| - | 
| - | 
| void Assembler::movss(const Operand& dst, XMMRegister src ) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
| @@ -2327,16 +2355,6 @@ void Assembler::movss(XMMRegister dst, const Operand& src) { | 
| } | 
|  | 
|  | 
| -void Assembler::movss(XMMRegister dst, XMMRegister src) { | 
| -  ASSERT(IsEnabled(SSE2)); | 
| -  EnsureSpace ensure_space(this); | 
| -  EMIT(0xF3); | 
| -  EMIT(0x0F); | 
| -  EMIT(0x10); | 
| -  emit_sse_operand(dst, src); | 
| -} | 
| - | 
| - | 
| void Assembler::movd(XMMRegister dst, const Operand& src) { | 
| ASSERT(IsEnabled(SSE2)); | 
| EnsureSpace ensure_space(this); | 
|  |