Chromium Code Reviews| Index: src/ia32/assembler-ia32.cc |
| diff --git a/src/ia32/assembler-ia32.cc b/src/ia32/assembler-ia32.cc |
| index 4690c672898f3fe6cbab6b35b3c9fb1cf30de908..b5bb06268fab4516823103154d5852afe0fe72b9 100644 |
| --- a/src/ia32/assembler-ia32.cc |
| +++ b/src/ia32/assembler-ia32.cc |
| @@ -2221,6 +2221,41 @@ void Assembler::movdqu(XMMRegister dst, const Operand& src) { |
| } |
| +void Assembler::movntdqa(XMMRegister dst, const Operand& src) { |
| + ASSERT(CpuFeatures::IsEnabled(SSE2)); |
|
Erik Corry
2010/06/03 20:29:49
As far as I can see this is an SSE4 instruction.
Lasse Reichstein
2010/06/04 11:52:13
Well spotted.
|
| + EnsureSpace ensure_space(this); |
| + last_pc_ = pc_; |
| + EMIT(0x66); |
| + EMIT(0x0F); |
| + EMIT(0x38); |
| + EMIT(0x2A); |
| + emit_sse_operand(dst, src); |
| +} |
| + |
| + |
| +void Assembler::movntdq(const Operand& dst, XMMRegister src) { |
| + ASSERT(CpuFeatures::IsEnabled(SSE2)); |
| + EnsureSpace ensure_space(this); |
| + last_pc_ = pc_; |
| + EMIT(0x66); |
| + EMIT(0x0F); |
| + EMIT(0xE7); |
| + emit_sse_operand(src, dst); |
| +} |
| + |
| + |
| +void Assembler::prefetch(const Operand& src, int level) { |
| + ASSERT(CpuFeatures::IsEnabled(SSE2)); |
|
Erik Corry
2010/06/03 20:29:49
This is an SSE instruction.
Lasse Reichstein
2010/06/04 11:52:13
True. Do we even have a test for that?
|
| + ASSERT(is_uint2(level)); |
| + EnsureSpace ensure_space(this); |
| + last_pc_ = pc_; |
| + EMIT(0x0F); |
| + EMIT(0x18); |
| + XMMRegister code = { level }; // Emit hint number in Reg position of RegR/M. |
| + emit_sse_operand(code, src); |
| +} |
| + |
| + |
| void Assembler::movdbl(XMMRegister dst, const Operand& src) { |
| EnsureSpace ensure_space(this); |
| last_pc_ = pc_; |
| @@ -2300,7 +2335,6 @@ void Assembler::ptest(XMMRegister dst, XMMRegister src) { |
| emit_sse_operand(dst, src); |
| } |
|
Erik Corry
2010/06/03 20:29:49
Inadvertent edit?
Lasse Reichstein
2010/06/04 11:52:13
Fixed.
|
| - |
| void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) { |
| Register ireg = { reg.code() }; |
| emit_operand(ireg, adr); |