| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/heap.h" | 9 #include "vm/heap.h" |
| 10 #include "vm/memory_region.h" | 10 #include "vm/memory_region.h" |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 void Assembler::movsxw(Register dst, const Address& src) { | 288 void Assembler::movsxw(Register dst, const Address& src) { |
| 289 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 289 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 290 EmitOperandREX(dst, src, REX_W); | 290 EmitOperandREX(dst, src, REX_W); |
| 291 EmitUint8(0x0F); | 291 EmitUint8(0x0F); |
| 292 EmitUint8(0xBF); | 292 EmitUint8(0xBF); |
| 293 EmitOperand(dst & 7, src); | 293 EmitOperand(dst & 7, src); |
| 294 } | 294 } |
| 295 | 295 |
| 296 | 296 |
| 297 void Assembler::movw(Register dst, const Address& src) { | 297 void Assembler::movw(Register dst, const Address& src) { |
| 298 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 298 FATAL("Use movzxw or movsxw instead."); |
| 299 EmitOperandREX(dst, src, REX_NONE); | |
| 300 EmitOperandSizeOverride(); | |
| 301 EmitUint8(0x8B); | |
| 302 EmitOperand(dst & 7, src); | |
| 303 } | 299 } |
| 304 | 300 |
| 305 | 301 |
| 306 void Assembler::movw(const Address& dst, Register src) { | 302 void Assembler::movw(const Address& dst, Register src) { |
| 307 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 303 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 304 EmitOperandSizeOverride(); |
| 308 EmitOperandREX(src, dst, REX_NONE); | 305 EmitOperandREX(src, dst, REX_NONE); |
| 309 EmitOperandSizeOverride(); | |
| 310 EmitUint8(0x89); | 306 EmitUint8(0x89); |
| 311 EmitOperand(src & 7, dst); | 307 EmitOperand(src & 7, dst); |
| 312 } | 308 } |
| 313 | 309 |
| 314 | 310 |
| 315 void Assembler::movq(Register dst, const Immediate& imm) { | 311 void Assembler::movq(Register dst, const Immediate& imm) { |
| 316 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 312 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 317 if (imm.is_int32()) { | 313 if (imm.is_int32()) { |
| 318 Operand operand(dst); | 314 Operand operand(dst); |
| 319 EmitOperandREX(0, operand, REX_W); | 315 EmitOperandREX(0, operand, REX_W); |
| (...skipping 1870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2190 | 2186 |
| 2191 const char* Assembler::XmmRegisterName(XmmRegister reg) { | 2187 const char* Assembler::XmmRegisterName(XmmRegister reg) { |
| 2192 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); | 2188 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); |
| 2193 return xmm_reg_names[reg]; | 2189 return xmm_reg_names[reg]; |
| 2194 } | 2190 } |
| 2195 | 2191 |
| 2196 | 2192 |
| 2197 } // namespace dart | 2193 } // namespace dart |
| 2198 | 2194 |
| 2199 #endif // defined TARGET_ARCH_X64 | 2195 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |