| Index: runtime/vm/assembler_x64.cc
|
| diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc
|
| index 0a3f6dcfa91a6fcb76c0bdeb4b34bac9327fffad..00e65c0a588072ea947989637c019909ce19e5db 100644
|
| --- a/runtime/vm/assembler_x64.cc
|
| +++ b/runtime/vm/assembler_x64.cc
|
| @@ -20,7 +20,6 @@ namespace dart {
|
| DECLARE_FLAG(bool, check_code_pointer);
|
| DECLARE_FLAG(bool, inline_alloc);
|
|
|
| -
|
| Assembler::Assembler(bool use_far_branches)
|
| : buffer_(),
|
| prologue_offset_(-1),
|
| @@ -31,12 +30,10 @@ Assembler::Assembler(bool use_far_branches)
|
| ASSERT(!use_far_branches);
|
| }
|
|
|
| -
|
| void Assembler::InitializeMemoryWithBreakpoints(uword data, intptr_t length) {
|
| memset(reinterpret_cast<void*>(data), Instr::kBreakPointInstruction, length);
|
| }
|
|
|
| -
|
| void Assembler::call(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg);
|
| @@ -45,7 +42,6 @@ void Assembler::call(Register reg) {
|
| EmitOperand(2, operand);
|
| }
|
|
|
| -
|
| void Assembler::call(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(2, address, REX_NONE);
|
| @@ -53,7 +49,6 @@ void Assembler::call(const Address& address) {
|
| EmitOperand(2, address);
|
| }
|
|
|
| -
|
| void Assembler::call(Label* label) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| static const int kSize = 5;
|
| @@ -61,7 +56,6 @@ void Assembler::call(Label* label) {
|
| EmitLabel(label, kSize);
|
| }
|
|
|
| -
|
| void Assembler::LoadNativeEntry(Register dst,
|
| const ExternalLabel* label,
|
| Patchability patchable) {
|
| @@ -70,7 +64,6 @@ void Assembler::LoadNativeEntry(Register dst,
|
| LoadWordFromPoolOffset(dst, offset - kHeapObjectTag);
|
| }
|
|
|
| -
|
| void Assembler::call(const ExternalLabel* label) {
|
| { // Encode movq(TMP, Immediate(label->address())), but always as imm64.
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -81,7 +74,6 @@ void Assembler::call(const ExternalLabel* label) {
|
| call(TMP);
|
| }
|
|
|
| -
|
| void Assembler::CallPatchable(const StubEntry& stub_entry) {
|
| ASSERT(constant_pool_allowed());
|
| const Code& target = Code::ZoneHandle(stub_entry.code());
|
| @@ -94,7 +86,6 @@ void Assembler::CallPatchable(const StubEntry& stub_entry) {
|
| ASSERT((buffer_.GetPosition() - call_start) == kCallExternalLabelSize);
|
| }
|
|
|
| -
|
| void Assembler::CallWithEquivalence(const StubEntry& stub_entry,
|
| const Object& equivalence) {
|
| ASSERT(constant_pool_allowed());
|
| @@ -106,7 +97,6 @@ void Assembler::CallWithEquivalence(const StubEntry& stub_entry,
|
| call(TMP);
|
| }
|
|
|
| -
|
| void Assembler::Call(const StubEntry& stub_entry) {
|
| ASSERT(constant_pool_allowed());
|
| const Code& target = Code::ZoneHandle(stub_entry.code());
|
| @@ -117,21 +107,18 @@ void Assembler::Call(const StubEntry& stub_entry) {
|
| call(TMP);
|
| }
|
|
|
| -
|
| void Assembler::CallToRuntime() {
|
| movq(TMP, Address(THR, Thread::call_to_runtime_entry_point_offset()));
|
| movq(CODE_REG, Address(THR, Thread::call_to_runtime_stub_offset()));
|
| call(TMP);
|
| }
|
|
|
| -
|
| void Assembler::pushq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| EmitUint8(0x50 | (reg & 7));
|
| }
|
|
|
| -
|
| void Assembler::pushq(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(6, address, REX_NONE);
|
| @@ -139,7 +126,6 @@ void Assembler::pushq(const Address& address) {
|
| EmitOperand(6, address);
|
| }
|
|
|
| -
|
| void Assembler::pushq(const Immediate& imm) {
|
| if (imm.is_int8()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -155,7 +141,6 @@ void Assembler::pushq(const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::PushImmediate(const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| pushq(imm);
|
| @@ -165,14 +150,12 @@ void Assembler::PushImmediate(const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::popq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| EmitUint8(0x58 | (reg & 7));
|
| }
|
|
|
| -
|
| void Assembler::popq(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(0, address, REX_NONE);
|
| @@ -180,7 +163,6 @@ void Assembler::popq(const Address& address) {
|
| EmitOperand(0, address);
|
| }
|
|
|
| -
|
| void Assembler::setcc(Condition condition, ByteRegister dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x0F);
|
| @@ -188,7 +170,6 @@ void Assembler::setcc(Condition condition, ByteRegister dst) {
|
| EmitUint8(0xC0 + dst);
|
| }
|
|
|
| -
|
| void Assembler::movl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -197,7 +178,6 @@ void Assembler::movl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movl(Register dst, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(dst);
|
| @@ -208,7 +188,6 @@ void Assembler::movl(Register dst, const Immediate& imm) {
|
| EmitImmediate(imm);
|
| }
|
|
|
| -
|
| void Assembler::movl(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_NONE);
|
| @@ -216,7 +195,6 @@ void Assembler::movl(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movl(const Address& dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(src, dst, REX_NONE);
|
| @@ -224,13 +202,11 @@ void Assembler::movl(const Address& dst, Register src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movl(const Address& dst, const Immediate& imm) {
|
| movl(TMP, imm);
|
| movl(dst, TMP);
|
| }
|
|
|
| -
|
| void Assembler::movzxb(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -240,7 +216,6 @@ void Assembler::movzxb(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movzxb(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -249,7 +224,6 @@ void Assembler::movzxb(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movsxb(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -259,7 +233,6 @@ void Assembler::movsxb(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movsxb(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -268,7 +241,6 @@ void Assembler::movsxb(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movb(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_NONE);
|
| @@ -276,7 +248,6 @@ void Assembler::movb(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movb(const Address& dst, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(0, dst, REX_NONE);
|
| @@ -286,7 +257,6 @@ void Assembler::movb(const Address& dst, const Immediate& imm) {
|
| EmitUint8(imm.value() & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::movb(const Address& dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(src, dst, REX_NONE);
|
| @@ -294,7 +264,6 @@ void Assembler::movb(const Address& dst, Register src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movzxw(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -304,7 +273,6 @@ void Assembler::movzxw(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movzxw(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -313,7 +281,6 @@ void Assembler::movzxw(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movsxw(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -323,7 +290,6 @@ void Assembler::movsxw(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movsxw(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -332,12 +298,10 @@ void Assembler::movsxw(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movw(Register dst, const Address& src) {
|
| FATAL("Use movzxw or movsxw instead.");
|
| }
|
|
|
| -
|
| void Assembler::movw(const Address& dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandSizeOverride();
|
| @@ -346,7 +310,6 @@ void Assembler::movw(const Address& dst, Register src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movw(const Address& dst, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandSizeOverride();
|
| @@ -357,7 +320,6 @@ void Assembler::movw(const Address& dst, const Immediate& imm) {
|
| EmitUint8((imm.value() >> 8) & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::movq(Register dst, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| if (imm.is_int32()) {
|
| @@ -372,7 +334,6 @@ void Assembler::movq(Register dst, const Immediate& imm) {
|
| EmitImmediate(imm);
|
| }
|
|
|
| -
|
| // Use 0x89 encoding (instead of 0x8B encoding), which is expected by gdb64
|
| // older than 7.3.1-gg5 when disassembling a function's prologue (movq rbp, rsp)
|
| // for proper unwinding of Dart frames (use --generate_gdb_symbols and -O0).
|
| @@ -384,7 +345,6 @@ void Assembler::movq(Register dst, Register src) {
|
| EmitOperand(src & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movq(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -392,7 +352,6 @@ void Assembler::movq(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movq(const Address& dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(src, dst, REX_W);
|
| @@ -400,7 +359,6 @@ void Assembler::movq(const Address& dst, Register src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movq(const Address& dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -415,7 +373,6 @@ void Assembler::movq(const Address& dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::movsxd(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -424,7 +381,6 @@ void Assembler::movsxd(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movsxd(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -432,14 +388,12 @@ void Assembler::movsxd(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::rep_movsb() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xF3);
|
| EmitUint8(0xA4);
|
| }
|
|
|
| -
|
| void Assembler::leaq(Register dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, src, REX_W);
|
| @@ -447,7 +401,6 @@ void Assembler::leaq(Register dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::cmovnoq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -457,7 +410,6 @@ void Assembler::cmovnoq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cmoveq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -467,7 +419,6 @@ void Assembler::cmoveq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cmovgeq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -477,7 +428,6 @@ void Assembler::cmovgeq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cmovlessq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -487,7 +437,6 @@ void Assembler::cmovlessq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::movss(XmmRegister dst, const Address& src) {
|
| ASSERT(dst <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -498,7 +447,6 @@ void Assembler::movss(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movss(const Address& dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -509,7 +457,6 @@ void Assembler::movss(const Address& dst, XmmRegister src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movss(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -521,7 +468,6 @@ void Assembler::movss(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movd(XmmRegister dst, Register src) {
|
| ASSERT(dst <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -532,7 +478,6 @@ void Assembler::movd(XmmRegister dst, Register src) {
|
| EmitOperand(dst & 7, Operand(src));
|
| }
|
|
|
| -
|
| void Assembler::movd(Register dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -543,7 +488,6 @@ void Assembler::movd(Register dst, XmmRegister src) {
|
| EmitOperand(src & 7, Operand(dst));
|
| }
|
|
|
| -
|
| void Assembler::addss(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -555,7 +499,6 @@ void Assembler::addss(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::subss(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -567,7 +510,6 @@ void Assembler::subss(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::mulss(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -579,7 +521,6 @@ void Assembler::mulss(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::divss(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -591,7 +532,6 @@ void Assembler::divss(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movsd(XmmRegister dst, const Address& src) {
|
| ASSERT(dst <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -602,7 +542,6 @@ void Assembler::movsd(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movsd(const Address& dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -613,7 +552,6 @@ void Assembler::movsd(const Address& dst, XmmRegister src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movsd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -625,7 +563,6 @@ void Assembler::movsd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movaps(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -636,7 +573,6 @@ void Assembler::movaps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movups(XmmRegister dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -645,7 +581,6 @@ void Assembler::movups(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movups(const Address& dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(src, dst);
|
| @@ -654,7 +589,6 @@ void Assembler::movups(const Address& dst, XmmRegister src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::addsd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -666,7 +600,6 @@ void Assembler::addsd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::subsd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -678,7 +611,6 @@ void Assembler::subsd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::mulsd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -690,7 +622,6 @@ void Assembler::mulsd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::divsd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -702,7 +633,6 @@ void Assembler::divsd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::addpl(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x66);
|
| @@ -712,7 +642,6 @@ void Assembler::addpl(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::subpl(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x66);
|
| @@ -722,7 +651,6 @@ void Assembler::subpl(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::addps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -731,7 +659,6 @@ void Assembler::addps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::subps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -740,7 +667,6 @@ void Assembler::subps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::divps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -749,7 +675,6 @@ void Assembler::divps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::mulps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -758,7 +683,6 @@ void Assembler::mulps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::minps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -767,7 +691,6 @@ void Assembler::minps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::maxps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -776,7 +699,6 @@ void Assembler::maxps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::andps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -785,7 +707,6 @@ void Assembler::andps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::andps(XmmRegister dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -794,7 +715,6 @@ void Assembler::andps(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::orps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -809,28 +729,24 @@ void Assembler::notps(XmmRegister dst) {
|
| xorps(dst, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::negateps(XmmRegister dst) {
|
| // { 0x80000000, 0x80000000, 0x80000000, 0x80000000 }
|
| movq(TMP, Address(THR, Thread::float_negate_address_offset()));
|
| xorps(dst, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::absps(XmmRegister dst) {
|
| // { 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF }
|
| movq(TMP, Address(THR, Thread::float_absolute_address_offset()));
|
| andps(dst, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::zerowps(XmmRegister dst) {
|
| // { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000 }
|
| movq(TMP, Address(THR, Thread::float_zerow_address_offset()));
|
| andps(dst, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::cmppseq(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -840,7 +756,6 @@ void Assembler::cmppseq(XmmRegister dst, XmmRegister src) {
|
| EmitUint8(0x0);
|
| }
|
|
|
| -
|
| void Assembler::cmppsneq(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -850,7 +765,6 @@ void Assembler::cmppsneq(XmmRegister dst, XmmRegister src) {
|
| EmitUint8(0x4);
|
| }
|
|
|
| -
|
| void Assembler::cmppslt(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -860,7 +774,6 @@ void Assembler::cmppslt(XmmRegister dst, XmmRegister src) {
|
| EmitUint8(0x1);
|
| }
|
|
|
| -
|
| void Assembler::cmppsle(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -870,7 +783,6 @@ void Assembler::cmppsle(XmmRegister dst, XmmRegister src) {
|
| EmitUint8(0x2);
|
| }
|
|
|
| -
|
| void Assembler::cmppsnlt(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -880,7 +792,6 @@ void Assembler::cmppsnlt(XmmRegister dst, XmmRegister src) {
|
| EmitUint8(0x5);
|
| }
|
|
|
| -
|
| void Assembler::cmppsnle(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -890,7 +801,6 @@ void Assembler::cmppsnle(XmmRegister dst, XmmRegister src) {
|
| EmitUint8(0x6);
|
| }
|
|
|
| -
|
| void Assembler::sqrtps(XmmRegister dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, dst);
|
| @@ -899,7 +809,6 @@ void Assembler::sqrtps(XmmRegister dst) {
|
| EmitXmmRegisterOperand(dst & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::rsqrtps(XmmRegister dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, dst);
|
| @@ -908,7 +817,6 @@ void Assembler::rsqrtps(XmmRegister dst) {
|
| EmitXmmRegisterOperand(dst & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::reciprocalps(XmmRegister dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, dst);
|
| @@ -917,7 +825,6 @@ void Assembler::reciprocalps(XmmRegister dst) {
|
| EmitXmmRegisterOperand(dst & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::movhlps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -926,7 +833,6 @@ void Assembler::movhlps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movlhps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -935,7 +841,6 @@ void Assembler::movlhps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::unpcklps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -944,7 +849,6 @@ void Assembler::unpcklps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::unpckhps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -953,7 +857,6 @@ void Assembler::unpckhps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::unpcklpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x66);
|
| @@ -963,7 +866,6 @@ void Assembler::unpcklpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::unpckhpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x66);
|
| @@ -973,7 +875,6 @@ void Assembler::unpckhpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::set1ps(XmmRegister dst, Register tmp1, const Immediate& imm) {
|
| // Load 32-bit immediate value into tmp1.
|
| movl(tmp1, imm);
|
| @@ -983,7 +884,6 @@ void Assembler::set1ps(XmmRegister dst, Register tmp1, const Immediate& imm) {
|
| shufps(dst, dst, Immediate(0x0));
|
| }
|
|
|
| -
|
| void Assembler::shufps(XmmRegister dst, XmmRegister src, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -994,7 +894,6 @@ void Assembler::shufps(XmmRegister dst, XmmRegister src, const Immediate& imm) {
|
| EmitUint8(imm.value());
|
| }
|
|
|
| -
|
| void Assembler::addpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1006,14 +905,12 @@ void Assembler::addpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::negatepd(XmmRegister dst) {
|
| // { 0x8000000000000000LL, 0x8000000000000000LL }
|
| movq(TMP, Address(THR, Thread::double_negate_address_offset()));
|
| xorpd(dst, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::subpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1025,7 +922,6 @@ void Assembler::subpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::mulpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1037,7 +933,6 @@ void Assembler::mulpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::divpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1049,14 +944,12 @@ void Assembler::divpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::abspd(XmmRegister dst) {
|
| // { 0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFFLL }
|
| movq(TMP, Address(THR, Thread::double_abs_address_offset()));
|
| andpd(dst, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::minpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1068,7 +961,6 @@ void Assembler::minpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::maxpd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1080,7 +972,6 @@ void Assembler::maxpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::sqrtpd(XmmRegister dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(dst <= XMM15);
|
| @@ -1091,7 +982,6 @@ void Assembler::sqrtpd(XmmRegister dst) {
|
| EmitXmmRegisterOperand(dst & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::cvtps2pd(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1102,7 +992,6 @@ void Assembler::cvtps2pd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::cvtpd2ps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(src <= XMM15);
|
| @@ -1114,7 +1003,6 @@ void Assembler::cvtpd2ps(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::shufpd(XmmRegister dst, XmmRegister src, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x66);
|
| @@ -1126,7 +1014,6 @@ void Assembler::shufpd(XmmRegister dst, XmmRegister src, const Immediate& imm) {
|
| EmitUint8(imm.value());
|
| }
|
|
|
| -
|
| void Assembler::comisd(XmmRegister a, XmmRegister b) {
|
| ASSERT(a <= XMM15);
|
| ASSERT(b <= XMM15);
|
| @@ -1138,7 +1025,6 @@ void Assembler::comisd(XmmRegister a, XmmRegister b) {
|
| EmitXmmRegisterOperand(a & 7, b);
|
| }
|
|
|
| -
|
| void Assembler::movmskpd(Register dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1149,7 +1035,6 @@ void Assembler::movmskpd(Register dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::movmskps(Register dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1159,7 +1044,6 @@ void Assembler::movmskps(Register dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::sqrtsd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(dst <= XMM15);
|
| ASSERT(src <= XMM15);
|
| @@ -1171,7 +1055,6 @@ void Assembler::sqrtsd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::xorpd(XmmRegister dst, const Address& src) {
|
| ASSERT(dst <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1182,7 +1065,6 @@ void Assembler::xorpd(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::xorpd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(dst <= XMM15);
|
| ASSERT(src <= XMM15);
|
| @@ -1194,7 +1076,6 @@ void Assembler::xorpd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::xorps(XmmRegister dst, const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -1203,7 +1084,6 @@ void Assembler::xorps(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::xorps(XmmRegister dst, XmmRegister src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitREX_RB(dst, src);
|
| @@ -1222,7 +1102,6 @@ void Assembler::andpd(XmmRegister dst, const Address& src) {
|
| EmitOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::cvtsi2sdq(XmmRegister dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(dst <= XMM15);
|
| @@ -1234,7 +1113,6 @@ void Assembler::cvtsi2sdq(XmmRegister dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cvtsi2sdl(XmmRegister dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(dst <= XMM15);
|
| @@ -1246,7 +1124,6 @@ void Assembler::cvtsi2sdl(XmmRegister dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cvttsd2siq(Register dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1258,7 +1135,6 @@ void Assembler::cvttsd2siq(Register dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::cvtss2sd(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -1270,7 +1146,6 @@ void Assembler::cvtss2sd(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::cvtsd2ss(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -1282,7 +1157,6 @@ void Assembler::cvtsd2ss(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::pxor(XmmRegister dst, XmmRegister src) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -1294,7 +1168,6 @@ void Assembler::pxor(XmmRegister dst, XmmRegister src) {
|
| EmitXmmRegisterOperand(dst & 7, src);
|
| }
|
|
|
| -
|
| void Assembler::roundsd(XmmRegister dst, XmmRegister src, RoundingMode mode) {
|
| ASSERT(src <= XMM15);
|
| ASSERT(dst <= XMM15);
|
| @@ -1309,28 +1182,24 @@ void Assembler::roundsd(XmmRegister dst, XmmRegister src, RoundingMode mode) {
|
| EmitUint8(static_cast<uint8_t>(mode) | 0x8);
|
| }
|
|
|
| -
|
| void Assembler::fldl(const Address& src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xDD);
|
| EmitOperand(0, src);
|
| }
|
|
|
| -
|
| void Assembler::fstpl(const Address& dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xDD);
|
| EmitOperand(3, dst);
|
| }
|
|
|
| -
|
| void Assembler::fincstp() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xD9);
|
| EmitUint8(0xF7);
|
| }
|
|
|
| -
|
| void Assembler::ffree(intptr_t value) {
|
| ASSERT(value < 7);
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1338,21 +1207,18 @@ void Assembler::ffree(intptr_t value) {
|
| EmitUint8(0xC0 + value);
|
| }
|
|
|
| -
|
| void Assembler::fsin() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xD9);
|
| EmitUint8(0xFE);
|
| }
|
|
|
| -
|
| void Assembler::fcos() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xD9);
|
| EmitUint8(0xFF);
|
| }
|
|
|
| -
|
| void Assembler::xchgl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1361,7 +1227,6 @@ void Assembler::xchgl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::xchgq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1370,7 +1235,6 @@ void Assembler::xchgq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cmpb(const Address& address, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(7, address, REX_NONE);
|
| @@ -1380,7 +1244,6 @@ void Assembler::cmpb(const Address& address, const Immediate& imm) {
|
| EmitUint8(imm.value() & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::cmpw(Register reg, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandSizeOverride();
|
| @@ -1389,7 +1252,6 @@ void Assembler::cmpw(Register reg, const Address& address) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::cmpw(const Address& address, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandSizeOverride();
|
| @@ -1400,14 +1262,12 @@ void Assembler::cmpw(const Address& address, const Immediate& imm) {
|
| EmitUint8((imm.value() >> 8) & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::cmpl(Register reg, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| EmitComplex(7, Operand(reg), imm);
|
| }
|
|
|
| -
|
| void Assembler::cmpl(Register reg0, Register reg1) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg1);
|
| @@ -1416,7 +1276,6 @@ void Assembler::cmpl(Register reg0, Register reg1) {
|
| EmitOperand(reg0 & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cmpl(Register reg, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_NONE);
|
| @@ -1424,7 +1283,6 @@ void Assembler::cmpl(Register reg, const Address& address) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::cmpl(const Address& address, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(address);
|
| @@ -1432,7 +1290,6 @@ void Assembler::cmpl(const Address& address, const Immediate& imm) {
|
| EmitComplex(7, operand, imm);
|
| }
|
|
|
| -
|
| void Assembler::cmpq(const Address& address, Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_W);
|
| @@ -1440,7 +1297,6 @@ void Assembler::cmpq(const Address& address, Register reg) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::cmpq(const Address& address, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1453,7 +1309,6 @@ void Assembler::cmpq(const Address& address, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::cmpq(Register reg, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1466,7 +1321,6 @@ void Assembler::cmpq(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::cmpq(Register reg0, Register reg1) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg1);
|
| @@ -1475,7 +1329,6 @@ void Assembler::cmpq(Register reg0, Register reg1) {
|
| EmitOperand(reg0 & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::cmpq(Register reg, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_W);
|
| @@ -1483,7 +1336,6 @@ void Assembler::cmpq(Register reg, const Address& address) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::CompareImmediate(Register reg, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| cmpq(reg, imm);
|
| @@ -1494,7 +1346,6 @@ void Assembler::CompareImmediate(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::CompareImmediate(const Address& address, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| cmpq(address, imm);
|
| @@ -1504,7 +1355,6 @@ void Assembler::CompareImmediate(const Address& address, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::testl(Register reg1, Register reg2) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg2);
|
| @@ -1513,7 +1363,6 @@ void Assembler::testl(Register reg1, Register reg2) {
|
| EmitOperand(reg1 & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::testl(Register reg, const Immediate& imm) {
|
| // TODO(kasperl): Deal with registers r8-r15 using the short
|
| // encoding form of the immediate?
|
| @@ -1545,7 +1394,6 @@ void Assembler::testl(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::testb(const Address& address, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(0, address, REX_NONE);
|
| @@ -1555,7 +1403,6 @@ void Assembler::testb(const Address& address, const Immediate& imm) {
|
| EmitUint8(imm.value() & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::testq(Register reg1, Register reg2) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg2);
|
| @@ -1564,7 +1411,6 @@ void Assembler::testq(Register reg1, Register reg2) {
|
| EmitOperand(reg1 & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::testq(Register reg, const Immediate& imm) {
|
| // TODO(kasperl): Deal with registers r8-r15 using the short
|
| // encoding form of the immediate?
|
| @@ -1594,7 +1440,6 @@ void Assembler::testq(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::TestImmediate(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| testq(dst, imm);
|
| @@ -1605,7 +1450,6 @@ void Assembler::TestImmediate(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::andl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1614,14 +1458,12 @@ void Assembler::andl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::andl(Register dst, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(dst, REX_NONE);
|
| EmitComplex(4, Operand(dst), imm);
|
| }
|
|
|
| -
|
| void Assembler::orl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1630,14 +1472,12 @@ void Assembler::orl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::orl(Register dst, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(dst, REX_NONE);
|
| EmitComplex(1, Operand(dst), imm);
|
| }
|
|
|
| -
|
| void Assembler::orl(const Address& address, Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_NONE);
|
| @@ -1645,7 +1485,6 @@ void Assembler::orl(const Address& address, Register reg) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::xorl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1654,7 +1493,6 @@ void Assembler::xorl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::andq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1663,7 +1501,6 @@ void Assembler::andq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::andq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -1671,7 +1508,6 @@ void Assembler::andq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::andq(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1684,7 +1520,6 @@ void Assembler::andq(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::AndImmediate(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| andq(dst, imm);
|
| @@ -1695,7 +1530,6 @@ void Assembler::AndImmediate(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::orq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1704,7 +1538,6 @@ void Assembler::orq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::orq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -1712,7 +1545,6 @@ void Assembler::orq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::orq(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1725,7 +1557,6 @@ void Assembler::orq(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::OrImmediate(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| orq(dst, imm);
|
| @@ -1736,7 +1567,6 @@ void Assembler::OrImmediate(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::xorq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1745,7 +1575,6 @@ void Assembler::xorq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::xorq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -1753,7 +1582,6 @@ void Assembler::xorq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::xorq(const Address& dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(src, dst, REX_W);
|
| @@ -1761,7 +1589,6 @@ void Assembler::xorq(const Address& dst, Register src) {
|
| EmitOperand(src & 7, dst);
|
| }
|
|
|
| -
|
| void Assembler::xorq(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1774,7 +1601,6 @@ void Assembler::xorq(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::XorImmediate(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| xorq(dst, imm);
|
| @@ -1785,7 +1611,6 @@ void Assembler::XorImmediate(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::addl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1794,7 +1619,6 @@ void Assembler::addl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::addl(Register dst, const Immediate& imm) {
|
| ASSERT(imm.is_int32());
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1802,7 +1626,6 @@ void Assembler::addl(Register dst, const Immediate& imm) {
|
| EmitComplex(0, Operand(dst), imm);
|
| }
|
|
|
| -
|
| void Assembler::addl(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_NONE);
|
| @@ -1810,7 +1633,6 @@ void Assembler::addl(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::addl(const Address& address, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(src, address, REX_NONE);
|
| @@ -1818,7 +1640,6 @@ void Assembler::addl(const Address& address, Register src) {
|
| EmitOperand(src & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::adcl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1827,7 +1648,6 @@ void Assembler::adcl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::adcl(Register dst, const Immediate& imm) {
|
| ASSERT(imm.is_int32());
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1835,7 +1655,6 @@ void Assembler::adcl(Register dst, const Immediate& imm) {
|
| EmitComplex(2, Operand(dst), imm);
|
| }
|
|
|
| -
|
| void Assembler::adcl(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_NONE);
|
| @@ -1843,7 +1662,6 @@ void Assembler::adcl(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::addq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1852,7 +1670,6 @@ void Assembler::addq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::addq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -1860,7 +1677,6 @@ void Assembler::addq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::addq(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1873,7 +1689,6 @@ void Assembler::addq(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::addq(const Address& address, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1885,7 +1700,6 @@ void Assembler::addq(const Address& address, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::addq(const Address& address, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(src, address, REX_W);
|
| @@ -1893,7 +1707,6 @@ void Assembler::addq(const Address& address, Register src) {
|
| EmitOperand(src & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::adcq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1902,7 +1715,6 @@ void Assembler::adcq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::adcq(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1915,7 +1727,6 @@ void Assembler::adcq(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::adcq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -1923,7 +1734,6 @@ void Assembler::adcq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::subl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1932,7 +1742,6 @@ void Assembler::subl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::subl(Register dst, const Immediate& imm) {
|
| ASSERT(imm.is_int32());
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1940,7 +1749,6 @@ void Assembler::subl(Register dst, const Immediate& imm) {
|
| EmitComplex(3, Operand(dst), imm);
|
| }
|
|
|
| -
|
| void Assembler::subl(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_NONE);
|
| @@ -1948,7 +1756,6 @@ void Assembler::subl(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::sbbl(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -1957,7 +1764,6 @@ void Assembler::sbbl(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::sbbl(Register dst, const Immediate& imm) {
|
| ASSERT(imm.is_int32());
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -1965,7 +1771,6 @@ void Assembler::sbbl(Register dst, const Immediate& imm) {
|
| EmitComplex(3, Operand(dst), imm);
|
| }
|
|
|
| -
|
| void Assembler::sbbl(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_NONE);
|
| @@ -1973,20 +1778,17 @@ void Assembler::sbbl(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::cdq() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x99);
|
| }
|
|
|
| -
|
| void Assembler::cqo() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(RAX, REX_W);
|
| EmitUint8(0x99);
|
| }
|
|
|
| -
|
| void Assembler::idivl(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| @@ -1994,7 +1796,6 @@ void Assembler::idivl(Register reg) {
|
| EmitOperand(7, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::divl(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| @@ -2002,7 +1803,6 @@ void Assembler::divl(Register reg) {
|
| EmitOperand(6, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::idivq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_W);
|
| @@ -2010,7 +1810,6 @@ void Assembler::idivq(Register reg) {
|
| EmitOperand(7, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::divq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_W);
|
| @@ -2018,7 +1817,6 @@ void Assembler::divq(Register reg) {
|
| EmitOperand(6, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::imull(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -2028,7 +1826,6 @@ void Assembler::imull(Register dst, Register src) {
|
| EmitOperand(dst & 7, Operand(src));
|
| }
|
|
|
| -
|
| void Assembler::imull(Register reg, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg);
|
| @@ -2038,7 +1835,6 @@ void Assembler::imull(Register reg, const Immediate& imm) {
|
| EmitImmediate(imm);
|
| }
|
|
|
| -
|
| void Assembler::mull(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| @@ -2046,7 +1842,6 @@ void Assembler::mull(Register reg) {
|
| EmitOperand(4, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::imulq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -2056,7 +1851,6 @@ void Assembler::imulq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::imulq(Register reg, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -2072,7 +1866,6 @@ void Assembler::imulq(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::MulImmediate(Register reg, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| imulq(reg, imm);
|
| @@ -2083,7 +1876,6 @@ void Assembler::MulImmediate(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::imulq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -2092,7 +1884,6 @@ void Assembler::imulq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::mulq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_W);
|
| @@ -2100,7 +1891,6 @@ void Assembler::mulq(Register reg) {
|
| EmitOperand(4, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::subq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -2109,7 +1899,6 @@ void Assembler::subq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::subq(Register reg, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -2122,7 +1911,6 @@ void Assembler::subq(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::subq(Register reg, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_W);
|
| @@ -2130,7 +1918,6 @@ void Assembler::subq(Register reg, const Address& address) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::subq(const Address& address, Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_W);
|
| @@ -2138,7 +1925,6 @@ void Assembler::subq(const Address& address, Register reg) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::subq(const Address& address, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -2150,7 +1936,6 @@ void Assembler::subq(const Address& address, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::sbbq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -2159,7 +1944,6 @@ void Assembler::sbbq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::sbbq(Register dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -2172,7 +1956,6 @@ void Assembler::sbbq(Register dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::sbbq(Register dst, const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(dst, address, REX_W);
|
| @@ -2180,37 +1963,30 @@ void Assembler::sbbq(Register dst, const Address& address) {
|
| EmitOperand(dst & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::shll(Register reg, const Immediate& imm) {
|
| EmitGenericShift(false, 4, reg, imm);
|
| }
|
|
|
| -
|
| void Assembler::shll(Register operand, Register shifter) {
|
| EmitGenericShift(false, 4, operand, shifter);
|
| }
|
|
|
| -
|
| void Assembler::shrl(Register reg, const Immediate& imm) {
|
| EmitGenericShift(false, 5, reg, imm);
|
| }
|
|
|
| -
|
| void Assembler::shrl(Register operand, Register shifter) {
|
| EmitGenericShift(false, 5, operand, shifter);
|
| }
|
|
|
| -
|
| void Assembler::sarl(Register reg, const Immediate& imm) {
|
| EmitGenericShift(false, 7, reg, imm);
|
| }
|
|
|
| -
|
| void Assembler::sarl(Register operand, Register shifter) {
|
| EmitGenericShift(false, 7, operand, shifter);
|
| }
|
|
|
| -
|
| void Assembler::shldl(Register dst, Register src, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(imm.is_int8());
|
| @@ -2222,37 +1998,30 @@ void Assembler::shldl(Register dst, Register src, const Immediate& imm) {
|
| EmitUint8(imm.value() & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::shlq(Register reg, const Immediate& imm) {
|
| EmitGenericShift(true, 4, reg, imm);
|
| }
|
|
|
| -
|
| void Assembler::shlq(Register operand, Register shifter) {
|
| EmitGenericShift(true, 4, operand, shifter);
|
| }
|
|
|
| -
|
| void Assembler::shrq(Register reg, const Immediate& imm) {
|
| EmitGenericShift(true, 5, reg, imm);
|
| }
|
|
|
| -
|
| void Assembler::shrq(Register operand, Register shifter) {
|
| EmitGenericShift(true, 5, operand, shifter);
|
| }
|
|
|
| -
|
| void Assembler::sarq(Register reg, const Immediate& imm) {
|
| EmitGenericShift(true, 7, reg, imm);
|
| }
|
|
|
| -
|
| void Assembler::sarq(Register operand, Register shifter) {
|
| EmitGenericShift(true, 7, operand, shifter);
|
| }
|
|
|
| -
|
| void Assembler::shldq(Register dst, Register src, const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(imm.is_int8());
|
| @@ -2264,7 +2033,6 @@ void Assembler::shldq(Register dst, Register src, const Immediate& imm) {
|
| EmitUint8(imm.value() & 0xFF);
|
| }
|
|
|
| -
|
| void Assembler::shldq(Register dst, Register src, Register shifter) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(shifter == RCX);
|
| @@ -2275,7 +2043,6 @@ void Assembler::shldq(Register dst, Register src, Register shifter) {
|
| EmitOperand(src & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::shrdq(Register dst, Register src, Register shifter) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| ASSERT(shifter == RCX);
|
| @@ -2286,7 +2053,6 @@ void Assembler::shrdq(Register dst, Register src, Register shifter) {
|
| EmitOperand(src & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::incl(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(address);
|
| @@ -2295,7 +2061,6 @@ void Assembler::incl(const Address& address) {
|
| EmitOperand(0, operand);
|
| }
|
|
|
| -
|
| void Assembler::decl(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(address);
|
| @@ -2304,7 +2069,6 @@ void Assembler::decl(const Address& address) {
|
| EmitOperand(1, operand);
|
| }
|
|
|
| -
|
| void Assembler::incq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg);
|
| @@ -2313,7 +2077,6 @@ void Assembler::incq(Register reg) {
|
| EmitOperand(0, operand);
|
| }
|
|
|
| -
|
| void Assembler::incq(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(address);
|
| @@ -2322,7 +2085,6 @@ void Assembler::incq(const Address& address) {
|
| EmitOperand(0, operand);
|
| }
|
|
|
| -
|
| void Assembler::decq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg);
|
| @@ -2331,7 +2093,6 @@ void Assembler::decq(Register reg) {
|
| EmitOperand(1, operand);
|
| }
|
|
|
| -
|
| void Assembler::decq(const Address& address) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(address);
|
| @@ -2340,7 +2101,6 @@ void Assembler::decq(const Address& address) {
|
| EmitOperand(1, operand);
|
| }
|
|
|
| -
|
| void Assembler::negl(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| @@ -2348,7 +2108,6 @@ void Assembler::negl(Register reg) {
|
| EmitOperand(3, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::negq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_W);
|
| @@ -2356,7 +2115,6 @@ void Assembler::negq(Register reg) {
|
| EmitOperand(3, Operand(reg));
|
| }
|
|
|
| -
|
| void Assembler::notl(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_NONE);
|
| @@ -2364,7 +2122,6 @@ void Assembler::notl(Register reg) {
|
| EmitUint8(0xD0 | (reg & 7));
|
| }
|
|
|
| -
|
| void Assembler::notq(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitRegisterREX(reg, REX_W);
|
| @@ -2372,7 +2129,6 @@ void Assembler::notq(Register reg) {
|
| EmitUint8(0xD0 | (reg & 7));
|
| }
|
|
|
| -
|
| void Assembler::bsrq(Register dst, Register src) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(src);
|
| @@ -2382,7 +2138,6 @@ void Assembler::bsrq(Register dst, Register src) {
|
| EmitOperand(dst & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::btq(Register base, Register offset) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(base);
|
| @@ -2392,7 +2147,6 @@ void Assembler::btq(Register base, Register offset) {
|
| EmitOperand(offset & 7, operand);
|
| }
|
|
|
| -
|
| void Assembler::enter(const Immediate& imm) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xC8);
|
| @@ -2402,19 +2156,16 @@ void Assembler::enter(const Immediate& imm) {
|
| EmitUint8(0x00);
|
| }
|
|
|
| -
|
| void Assembler::leave() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xC9);
|
| }
|
|
|
| -
|
| void Assembler::ret() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xC3);
|
| }
|
|
|
| -
|
| void Assembler::nop(int size) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| // There are nops up to size 15, but for now just provide up to size 8.
|
| @@ -2477,19 +2228,16 @@ void Assembler::nop(int size) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::int3() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xCC);
|
| }
|
|
|
| -
|
| void Assembler::hlt() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xF4);
|
| }
|
|
|
| -
|
| void Assembler::j(Condition condition, Label* label, bool near) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| if (label->IsBound()) {
|
| @@ -2515,7 +2263,6 @@ void Assembler::j(Condition condition, Label* label, bool near) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::J(Condition condition,
|
| const StubEntry& stub_entry,
|
| Register pp) {
|
| @@ -2526,7 +2273,6 @@ void Assembler::J(Condition condition,
|
| Bind(&no_jump);
|
| }
|
|
|
| -
|
| void Assembler::jmp(Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| Operand operand(reg);
|
| @@ -2535,7 +2281,6 @@ void Assembler::jmp(Register reg) {
|
| EmitOperand(4, operand);
|
| }
|
|
|
| -
|
| void Assembler::jmp(const Address& dst) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(4, dst, REX_NONE);
|
| @@ -2543,7 +2288,6 @@ void Assembler::jmp(const Address& dst) {
|
| EmitOperand(4, dst);
|
| }
|
|
|
| -
|
| void Assembler::jmp(Label* label, bool near) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| if (label->IsBound()) {
|
| @@ -2567,7 +2311,6 @@ void Assembler::jmp(Label* label, bool near) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::jmp(const ExternalLabel* label) {
|
| { // Encode movq(TMP, Immediate(label->address())), but always as imm64.
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| @@ -2578,7 +2321,6 @@ void Assembler::jmp(const ExternalLabel* label) {
|
| jmp(TMP);
|
| }
|
|
|
| -
|
| void Assembler::JmpPatchable(const StubEntry& stub_entry, Register pp) {
|
| ASSERT((pp != PP) || constant_pool_allowed());
|
| const Code& target = Code::ZoneHandle(stub_entry.code());
|
| @@ -2589,7 +2331,6 @@ void Assembler::JmpPatchable(const StubEntry& stub_entry, Register pp) {
|
| jmp(TMP);
|
| }
|
|
|
| -
|
| void Assembler::Jmp(const StubEntry& stub_entry, Register pp) {
|
| ASSERT((pp != PP) || constant_pool_allowed());
|
| const Code& target = Code::ZoneHandle(stub_entry.code());
|
| @@ -2600,13 +2341,11 @@ void Assembler::Jmp(const StubEntry& stub_entry, Register pp) {
|
| jmp(TMP);
|
| }
|
|
|
| -
|
| void Assembler::lock() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0xF0);
|
| }
|
|
|
| -
|
| void Assembler::cmpxchgl(const Address& address, Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_NONE);
|
| @@ -2615,7 +2354,6 @@ void Assembler::cmpxchgl(const Address& address, Register reg) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::cmpxchgq(const Address& address, Register reg) {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitOperandREX(reg, address, REX_W);
|
| @@ -2624,31 +2362,26 @@ void Assembler::cmpxchgq(const Address& address, Register reg) {
|
| EmitOperand(reg & 7, address);
|
| }
|
|
|
| -
|
| void Assembler::cpuid() {
|
| AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| EmitUint8(0x0F);
|
| EmitUint8(0xA2);
|
| }
|
|
|
| -
|
| void Assembler::CompareRegisters(Register a, Register b) {
|
| cmpq(a, b);
|
| }
|
|
|
| -
|
| void Assembler::MoveRegister(Register to, Register from) {
|
| if (to != from) {
|
| movq(to, from);
|
| }
|
| }
|
|
|
| -
|
| void Assembler::PopRegister(Register r) {
|
| popq(r);
|
| }
|
|
|
| -
|
| void Assembler::AddImmediate(Register reg, const Immediate& imm) {
|
| const int64_t value = imm.value();
|
| if (value == 0) {
|
| @@ -2671,7 +2404,6 @@ void Assembler::AddImmediate(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::AddImmediate(const Address& address, const Immediate& imm) {
|
| const int64_t value = imm.value();
|
| if (value == 0) {
|
| @@ -2693,7 +2425,6 @@ void Assembler::AddImmediate(const Address& address, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::SubImmediate(Register reg, const Immediate& imm) {
|
| const int64_t value = imm.value();
|
| if (value == 0) {
|
| @@ -2716,7 +2447,6 @@ void Assembler::SubImmediate(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::SubImmediate(const Address& address, const Immediate& imm) {
|
| const int64_t value = imm.value();
|
| if (value == 0) {
|
| @@ -2738,7 +2468,6 @@ void Assembler::SubImmediate(const Address& address, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::Drop(intptr_t stack_elements, Register tmp) {
|
| ASSERT(stack_elements >= 0);
|
| if (stack_elements <= 4) {
|
| @@ -2750,7 +2479,6 @@ void Assembler::Drop(intptr_t stack_elements, Register tmp) {
|
| addq(RSP, Immediate(stack_elements * kWordSize));
|
| }
|
|
|
| -
|
| bool Assembler::CanLoadFromObjectPool(const Object& object) const {
|
| ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
|
| ASSERT(!object.IsField() || Field::Cast(object).IsOriginal());
|
| @@ -2771,7 +2499,6 @@ bool Assembler::CanLoadFromObjectPool(const Object& object) const {
|
| return true;
|
| }
|
|
|
| -
|
| void Assembler::LoadWordFromPoolOffset(Register dst, int32_t offset) {
|
| ASSERT(constant_pool_allowed());
|
| ASSERT(dst != PP);
|
| @@ -2780,12 +2507,10 @@ void Assembler::LoadWordFromPoolOffset(Register dst, int32_t offset) {
|
| movq(dst, Address::AddressBaseImm32(PP, offset));
|
| }
|
|
|
| -
|
| void Assembler::LoadIsolate(Register dst) {
|
| movq(dst, Address(THR, Thread::isolate_offset()));
|
| }
|
|
|
| -
|
| void Assembler::LoadObjectHelper(Register dst,
|
| const Object& object,
|
| bool is_unique) {
|
| @@ -2804,7 +2529,6 @@ void Assembler::LoadObjectHelper(Register dst,
|
| }
|
| }
|
|
|
| -
|
| void Assembler::LoadFunctionFromCalleePool(Register dst,
|
| const Function& function,
|
| Register new_pp) {
|
| @@ -2815,17 +2539,14 @@ void Assembler::LoadFunctionFromCalleePool(Register dst,
|
| movq(dst, Address::AddressBaseImm32(new_pp, offset - kHeapObjectTag));
|
| }
|
|
|
| -
|
| void Assembler::LoadObject(Register dst, const Object& object) {
|
| LoadObjectHelper(dst, object, false);
|
| }
|
|
|
| -
|
| void Assembler::LoadUniqueObject(Register dst, const Object& object) {
|
| LoadObjectHelper(dst, object, true);
|
| }
|
|
|
| -
|
| void Assembler::StoreObject(const Address& dst, const Object& object) {
|
| ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
|
| ASSERT(!object.IsField() || Field::Cast(object).IsOriginal());
|
| @@ -2841,7 +2562,6 @@ void Assembler::StoreObject(const Address& dst, const Object& object) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::PushObject(const Object& object) {
|
| ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
|
| ASSERT(!object.IsField() || Field::Cast(object).IsOriginal());
|
| @@ -2856,7 +2576,6 @@ void Assembler::PushObject(const Object& object) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::CompareObject(Register reg, const Object& object) {
|
| ASSERT(!object.IsICData() || ICData::Cast(object).IsOriginal());
|
| ASSERT(!object.IsField() || Field::Cast(object).IsOriginal());
|
| @@ -2872,12 +2591,10 @@ void Assembler::CompareObject(Register reg, const Object& object) {
|
| }
|
| }
|
|
|
| -
|
| intptr_t Assembler::FindImmediate(int64_t imm) {
|
| return object_pool_wrapper_.FindImmediate(imm);
|
| }
|
|
|
| -
|
| void Assembler::LoadImmediate(Register reg, const Immediate& imm) {
|
| if (imm.is_int32() || !constant_pool_allowed()) {
|
| movq(reg, imm);
|
| @@ -2887,7 +2604,6 @@ void Assembler::LoadImmediate(Register reg, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::MoveImmediate(const Address& dst, const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| movq(dst, imm);
|
| @@ -2897,7 +2613,6 @@ void Assembler::MoveImmediate(const Address& dst, const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| // Destroys the value register.
|
| void Assembler::StoreIntoObjectFilterNoSmi(Register object,
|
| Register value,
|
| @@ -2917,7 +2632,6 @@ void Assembler::StoreIntoObjectFilterNoSmi(Register object,
|
| j(NOT_ZERO, no_update, Assembler::kNearJump);
|
| }
|
|
|
| -
|
| // Destroys the value register.
|
| void Assembler::StoreIntoObjectFilter(Register object,
|
| Register value,
|
| @@ -2937,7 +2651,6 @@ void Assembler::StoreIntoObjectFilter(Register object,
|
| j(NOT_ZERO, no_update, Assembler::kNearJump);
|
| }
|
|
|
| -
|
| void Assembler::StoreIntoObject(Register object,
|
| const Address& dest,
|
| Register value,
|
| @@ -2965,7 +2678,6 @@ void Assembler::StoreIntoObject(Register object,
|
| Bind(&done);
|
| }
|
|
|
| -
|
| void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| const Address& dest,
|
| Register value) {
|
| @@ -2981,7 +2693,6 @@ void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| // No store buffer update.
|
| }
|
|
|
| -
|
| void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| const Address& dest,
|
| const Object& value) {
|
| @@ -2990,7 +2701,6 @@ void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| StoreObject(dest, value);
|
| }
|
|
|
| -
|
| void Assembler::StoreIntoSmiField(const Address& dest, Register value) {
|
| #if defined(DEBUG)
|
| Label done;
|
| @@ -3002,13 +2712,11 @@ void Assembler::StoreIntoSmiField(const Address& dest, Register value) {
|
| movq(dest, value);
|
| }
|
|
|
| -
|
| void Assembler::ZeroInitSmiField(const Address& dest) {
|
| Immediate zero(Smi::RawValue(0));
|
| movq(dest, zero);
|
| }
|
|
|
| -
|
| void Assembler::IncrementSmiField(const Address& dest, int64_t increment) {
|
| // Note: FlowGraphCompiler::EdgeCounterIncrementSizeInBytes depends on
|
| // the length of this instruction sequence.
|
| @@ -3016,21 +2724,18 @@ void Assembler::IncrementSmiField(const Address& dest, int64_t increment) {
|
| addq(dest, inc_imm);
|
| }
|
|
|
| -
|
| void Assembler::DoubleNegate(XmmRegister d) {
|
| // {0x8000000000000000LL, 0x8000000000000000LL}
|
| movq(TMP, Address(THR, Thread::double_negate_address_offset()));
|
| xorpd(d, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::DoubleAbs(XmmRegister reg) {
|
| // {0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFFLL}
|
| movq(TMP, Address(THR, Thread::double_abs_address_offset()));
|
| andpd(reg, Address(TMP, 0));
|
| }
|
|
|
| -
|
| void Assembler::Stop(const char* message, bool fixed_length_encoding) {
|
| int64_t message_address = reinterpret_cast<int64_t>(message);
|
| if (FLAG_print_stop_message) {
|
| @@ -3057,7 +2762,6 @@ void Assembler::Stop(const char* message, bool fixed_length_encoding) {
|
| int3(); // Execution can be resumed with the 'cont' command in gdb.
|
| }
|
|
|
| -
|
| void Assembler::Bind(Label* label) {
|
| intptr_t bound = buffer_.Size();
|
| ASSERT(!label->IsBound()); // Labels can only be bound once.
|
| @@ -3076,7 +2780,6 @@ void Assembler::Bind(Label* label) {
|
| label->BindTo(bound);
|
| }
|
|
|
| -
|
| void Assembler::EnterFrame(intptr_t frame_size) {
|
| if (prologue_offset_ == -1) {
|
| prologue_offset_ = CodeSize();
|
| @@ -3097,13 +2800,11 @@ void Assembler::EnterFrame(intptr_t frame_size) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::LeaveFrame() {
|
| movq(RSP, RBP);
|
| popq(RBP);
|
| }
|
|
|
| -
|
| void Assembler::ReserveAlignedFrameSpace(intptr_t frame_space) {
|
| // Reserve space for arguments and align frame before entering
|
| // the C++ world.
|
| @@ -3115,7 +2816,6 @@ void Assembler::ReserveAlignedFrameSpace(intptr_t frame_space) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::PushRegisters(intptr_t cpu_register_set,
|
| intptr_t xmm_register_set) {
|
| const intptr_t xmm_regs_count = RegisterSet::RegisterCount(xmm_register_set);
|
| @@ -3144,7 +2844,6 @@ void Assembler::PushRegisters(intptr_t cpu_register_set,
|
| }
|
| }
|
|
|
| -
|
| void Assembler::PopRegisters(intptr_t cpu_register_set,
|
| intptr_t xmm_register_set) {
|
| for (intptr_t i = 0; i < kNumberOfCpuRegisters; ++i) {
|
| @@ -3170,7 +2869,6 @@ void Assembler::PopRegisters(intptr_t cpu_register_set,
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EnterCallRuntimeFrame(intptr_t frame_space) {
|
| Comment("EnterCallRuntimeFrame");
|
| EnterStubFrame();
|
| @@ -3182,7 +2880,6 @@ void Assembler::EnterCallRuntimeFrame(intptr_t frame_space) {
|
| ReserveAlignedFrameSpace(frame_space);
|
| }
|
|
|
| -
|
| void Assembler::LeaveCallRuntimeFrame() {
|
| // RSP might have been modified to reserve space for arguments
|
| // and ensure proper alignment of the stack frame.
|
| @@ -3204,7 +2901,6 @@ void Assembler::LeaveCallRuntimeFrame() {
|
| LeaveStubFrame();
|
| }
|
|
|
| -
|
| void Assembler::CallCFunction(Register reg) {
|
| // Reserve shadow space for outgoing arguments.
|
| if (CallingConventions::kShadowSpaceBytes != 0) {
|
| @@ -3213,18 +2909,15 @@ void Assembler::CallCFunction(Register reg) {
|
| call(reg);
|
| }
|
|
|
| -
|
| void Assembler::CallRuntime(const RuntimeEntry& entry,
|
| intptr_t argument_count) {
|
| entry.Call(this, argument_count);
|
| }
|
|
|
| -
|
| void Assembler::RestoreCodePointer() {
|
| movq(CODE_REG, Address(RBP, kPcMarkerSlotFromFp * kWordSize));
|
| }
|
|
|
| -
|
| void Assembler::LoadPoolPointer(Register pp) {
|
| // Load new pool pointer.
|
| CheckCodePointer();
|
| @@ -3232,7 +2925,6 @@ void Assembler::LoadPoolPointer(Register pp) {
|
| set_constant_pool_allowed(pp == PP);
|
| }
|
|
|
| -
|
| void Assembler::EnterDartFrame(intptr_t frame_size, Register new_pp) {
|
| ASSERT(!constant_pool_allowed());
|
| EnterFrame(0);
|
| @@ -3249,7 +2941,6 @@ void Assembler::EnterDartFrame(intptr_t frame_size, Register new_pp) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::LeaveDartFrame(RestorePP restore_pp) {
|
| // Restore caller's PP register that was pushed in EnterDartFrame.
|
| if (restore_pp == kRestoreCallerPP) {
|
| @@ -3259,7 +2950,6 @@ void Assembler::LeaveDartFrame(RestorePP restore_pp) {
|
| LeaveFrame();
|
| }
|
|
|
| -
|
| void Assembler::CheckCodePointer() {
|
| #ifdef DEBUG
|
| if (!FLAG_check_code_pointer) {
|
| @@ -3290,7 +2980,6 @@ void Assembler::CheckCodePointer() {
|
| #endif
|
| }
|
|
|
| -
|
| // On entry to a function compiled for OSR, the caller's frame pointer, the
|
| // stack locals, and any copied parameters are already in place. The frame
|
| // pointer is already set up. The PC marker is not correct for the
|
| @@ -3310,17 +2999,14 @@ void Assembler::EnterOsrFrame(intptr_t extra_size) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EnterStubFrame() {
|
| EnterDartFrame(0, kNoRegister);
|
| }
|
|
|
| -
|
| void Assembler::LeaveStubFrame() {
|
| LeaveDartFrame();
|
| }
|
|
|
| -
|
| // RDI receiver, RBX guarded cid as Smi
|
| void Assembler::MonomorphicCheckedEntry() {
|
| ASSERT(has_single_entry_point_);
|
| @@ -3350,7 +3036,6 @@ void Assembler::MonomorphicCheckedEntry() {
|
| ASSERT((CodeSize() & kSmiTagMask) == kSmiTag);
|
| }
|
|
|
| -
|
| #ifndef PRODUCT
|
| void Assembler::MaybeTraceAllocation(intptr_t cid,
|
| Label* trace,
|
| @@ -3369,7 +3054,6 @@ void Assembler::MaybeTraceAllocation(intptr_t cid,
|
| j(NOT_ZERO, trace, near_jump);
|
| }
|
|
|
| -
|
| void Assembler::UpdateAllocationStats(intptr_t cid, Heap::Space space) {
|
| ASSERT(cid > 0);
|
| intptr_t counter_offset =
|
| @@ -3382,7 +3066,6 @@ void Assembler::UpdateAllocationStats(intptr_t cid, Heap::Space space) {
|
| incq(Address(temp_reg, counter_offset));
|
| }
|
|
|
| -
|
| void Assembler::UpdateAllocationStatsWithSize(intptr_t cid,
|
| Register size_reg,
|
| Heap::Space space) {
|
| @@ -3394,7 +3077,6 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid,
|
| addq(Address(temp_reg, size_offset), size_reg);
|
| }
|
|
|
| -
|
| void Assembler::UpdateAllocationStatsWithSize(intptr_t cid,
|
| intptr_t size_in_bytes,
|
| Heap::Space space) {
|
| @@ -3407,7 +3089,6 @@ void Assembler::UpdateAllocationStatsWithSize(intptr_t cid,
|
| }
|
| #endif // !PRODUCT
|
|
|
| -
|
| void Assembler::TryAllocate(const Class& cls,
|
| Label* failure,
|
| bool near_jump,
|
| @@ -3446,7 +3127,6 @@ void Assembler::TryAllocate(const Class& cls,
|
| }
|
| }
|
|
|
| -
|
| void Assembler::TryAllocateArray(intptr_t cid,
|
| intptr_t instance_size,
|
| Label* failure,
|
| @@ -3511,7 +3191,6 @@ void Assembler::Align(int alignment, intptr_t offset) {
|
| ASSERT(((offset + buffer_.GetPosition()) & (alignment - 1)) == 0);
|
| }
|
|
|
| -
|
| void Assembler::EmitOperand(int rm, const Operand& operand) {
|
| ASSERT(rm >= 0 && rm < 8);
|
| const intptr_t length = operand.length_;
|
| @@ -3525,14 +3204,12 @@ void Assembler::EmitOperand(int rm, const Operand& operand) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EmitXmmRegisterOperand(int rm, XmmRegister xmm_reg) {
|
| Operand operand;
|
| operand.SetModRM(3, static_cast<Register>(xmm_reg));
|
| EmitOperand(rm, operand);
|
| }
|
|
|
| -
|
| void Assembler::EmitImmediate(const Immediate& imm) {
|
| if (imm.is_int32()) {
|
| EmitInt32(static_cast<int32_t>(imm.value()));
|
| @@ -3541,7 +3218,6 @@ void Assembler::EmitImmediate(const Immediate& imm) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EmitComplex(int rm,
|
| const Operand& operand,
|
| const Immediate& immediate) {
|
| @@ -3563,7 +3239,6 @@ void Assembler::EmitComplex(int rm,
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EmitLabel(Label* label, intptr_t instruction_size) {
|
| if (label->IsBound()) {
|
| intptr_t offset = label->Position() - buffer_.Size();
|
| @@ -3574,7 +3249,6 @@ void Assembler::EmitLabel(Label* label, intptr_t instruction_size) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EmitLabelLink(Label* label) {
|
| ASSERT(!label->IsBound());
|
| intptr_t position = buffer_.Size();
|
| @@ -3582,7 +3256,6 @@ void Assembler::EmitLabelLink(Label* label) {
|
| label->LinkTo(position);
|
| }
|
|
|
| -
|
| void Assembler::EmitNearLabelLink(Label* label) {
|
| ASSERT(!label->IsBound());
|
| intptr_t position = buffer_.Size();
|
| @@ -3590,7 +3263,6 @@ void Assembler::EmitNearLabelLink(Label* label) {
|
| label->NearLinkTo(position);
|
| }
|
|
|
| -
|
| void Assembler::EmitGenericShift(bool wide,
|
| int rm,
|
| Register reg,
|
| @@ -3612,7 +3284,6 @@ void Assembler::EmitGenericShift(bool wide,
|
| }
|
| }
|
|
|
| -
|
| void Assembler::EmitGenericShift(bool wide,
|
| int rm,
|
| Register operand,
|
| @@ -3628,7 +3299,6 @@ void Assembler::EmitGenericShift(bool wide,
|
| EmitOperand(rm, Operand(operand));
|
| }
|
|
|
| -
|
| void Assembler::LoadClassId(Register result, Register object) {
|
| ASSERT(RawObject::kClassIdTagPos == 16);
|
| ASSERT(RawObject::kClassIdTagSize == 16);
|
| @@ -3638,7 +3308,6 @@ void Assembler::LoadClassId(Register result, Register object) {
|
| movzxw(result, FieldAddress(object, class_id_offset));
|
| }
|
|
|
| -
|
| void Assembler::LoadClassById(Register result, Register class_id) {
|
| ASSERT(result != class_id);
|
| LoadIsolate(result);
|
| @@ -3648,19 +3317,16 @@ void Assembler::LoadClassById(Register result, Register class_id) {
|
| movq(result, Address(result, class_id, TIMES_8, 0));
|
| }
|
|
|
| -
|
| void Assembler::LoadClass(Register result, Register object) {
|
| LoadClassId(TMP, object);
|
| LoadClassById(result, TMP);
|
| }
|
|
|
| -
|
| void Assembler::CompareClassId(Register object, intptr_t class_id) {
|
| LoadClassId(TMP, object);
|
| cmpl(TMP, Immediate(class_id));
|
| }
|
|
|
| -
|
| void Assembler::SmiUntagOrCheckClass(Register object,
|
| intptr_t class_id,
|
| Label* is_smi) {
|
| @@ -3680,7 +3346,6 @@ void Assembler::SmiUntagOrCheckClass(Register object,
|
| cmpl(TMP, Immediate(class_id));
|
| }
|
|
|
| -
|
| void Assembler::LoadClassIdMayBeSmi(Register result, Register object) {
|
| Label smi;
|
|
|
| @@ -3706,7 +3371,6 @@ void Assembler::LoadClassIdMayBeSmi(Register result, Register object) {
|
| }
|
| }
|
|
|
| -
|
| void Assembler::LoadTaggedClassIdMayBeSmi(Register result, Register object) {
|
| Label smi;
|
|
|
| @@ -3734,7 +3398,6 @@ void Assembler::LoadTaggedClassIdMayBeSmi(Register result, Register object) {
|
| }
|
| }
|
|
|
| -
|
| Address Assembler::ElementAddressForIntIndex(bool is_external,
|
| intptr_t cid,
|
| intptr_t index_scale,
|
| @@ -3750,7 +3413,6 @@ Address Assembler::ElementAddressForIntIndex(bool is_external,
|
| }
|
| }
|
|
|
| -
|
| static ScaleFactor ToScaleFactor(intptr_t index_scale) {
|
| // Note that index is expected smi-tagged, (i.e, times 2) for all arrays with
|
| // index scale factor > 1. E.g., for Uint8Array and OneByteString the index is
|
| @@ -3773,7 +3435,6 @@ static ScaleFactor ToScaleFactor(intptr_t index_scale) {
|
| }
|
| }
|
|
|
| -
|
| Address Assembler::ElementAddressForRegIndex(bool is_external,
|
| intptr_t cid,
|
| intptr_t index_scale,
|
| @@ -3787,23 +3448,19 @@ Address Assembler::ElementAddressForRegIndex(bool is_external,
|
| }
|
| }
|
|
|
| -
|
| static const char* cpu_reg_names[kNumberOfCpuRegisters] = {
|
| "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
|
| "r8", "r9", "r10", "r11", "r12", "r13", "thr", "pp"};
|
|
|
| -
|
| const char* Assembler::RegisterName(Register reg) {
|
| ASSERT((0 <= reg) && (reg < kNumberOfCpuRegisters));
|
| return cpu_reg_names[reg];
|
| }
|
|
|
| -
|
| static const char* xmm_reg_names[kNumberOfXmmRegisters] = {
|
| "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
|
| "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15"};
|
|
|
| -
|
| const char* Assembler::FpuRegisterName(FpuRegister reg) {
|
| ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters));
|
| return xmm_reg_names[reg];
|
|
|