| Index: src/x64/assembler-x64.cc
|
| diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc
|
| index 6d3750e3109c95426b9af2ef64116902765c274b..21ffa27b373afd27fd92cac29d680115ae4c4f8d 100644
|
| --- a/src/x64/assembler-x64.cc
|
| +++ b/src/x64/assembler-x64.cc
|
| @@ -901,6 +901,14 @@ void Assembler::emit_idiv(Register src, int size) {
|
| }
|
|
|
|
|
| +void Assembler::emit_div(Register src, int size) {
|
| + EnsureSpace ensure_space(this);
|
| + emit_rex(src, size);
|
| + emit(0xF7);
|
| + emit_modrm(0x6, src);
|
| +}
|
| +
|
| +
|
| void Assembler::emit_imul(Register src, int size) {
|
| EnsureSpace ensure_space(this);
|
| emit_rex(src, size);
|
| @@ -1394,6 +1402,17 @@ void Assembler::emit_movzxb(Register dst, const Operand& src, int size) {
|
| }
|
|
|
|
|
| +void Assembler::emit_movzxb(Register dst, Register src, int size) {
|
| + EnsureSpace ensure_space(this);
|
| + // 32 bit operations zero the top 32 bits of 64 bit registers. Therefore
|
| + // there is no need to make this a 64 bit operation.
|
| + emit_optional_rex_32(dst, src);
|
| + emit(0x0F);
|
| + emit(0xB6);
|
| + emit_modrm(dst, src);
|
| +}
|
| +
|
| +
|
| void Assembler::emit_movzxw(Register dst, const Operand& src, int size) {
|
| EnsureSpace ensure_space(this);
|
| // 32 bit operations zero the top 32 bits of 64 bit registers. Therefore
|
| @@ -1688,6 +1707,14 @@ void Assembler::emit_xchg(Register dst, Register src, int size) {
|
| }
|
|
|
|
|
| +void Assembler::emit_xchg(Register dst, const Operand& src, int size) {
|
| + EnsureSpace ensure_space(this);
|
| + emit_rex(dst, src, size);
|
| + emit(0x87);
|
| + emit_operand(dst, src);
|
| +}
|
| +
|
| +
|
| void Assembler::store_rax(void* dst, RelocInfo::Mode mode) {
|
| EnsureSpace ensure_space(this);
|
| if (kPointerSize == kInt64Size) {
|
|
|