Index: src/x64/assembler-x64.h |
diff --git a/src/x64/assembler-x64.h b/src/x64/assembler-x64.h |
index 22fb34d6fe43bc1a31322895064c14bb6a6cfb2e..9d4694b04209b07864975a18ef8c8b8244311238 100644 |
--- a/src/x64/assembler-x64.h |
+++ b/src/x64/assembler-x64.h |
@@ -153,6 +153,7 @@ struct Register { |
// Unfortunately we can't make this private in a struct when initializing |
// by assignment. |
int code_; |
+ |
private: |
static const int registerCodeByAllocationIndex[kNumAllocatableRegisters]; |
static const int allocationIndexByRegisterCode[kNumRegisters]; |
@@ -390,11 +391,15 @@ class Operand BASE_EMBEDDED { |
// this must not overflow. |
Operand(const Operand& base, int32_t offset); |
+ // Checks whether either base or index register is the given register. |
+ // Does not check the "reg" part of the Operand. |
+ bool AddressUsesRegister(Register reg) const; |
+ |
private: |
byte rex_; |
byte buf_[6]; |
- // The number of bytes in buf_. |
- unsigned int len_; |
+ // The number of bytes of buf_ in use. |
+ byte len_; |
// Set the ModR/M byte without an encoded 'reg' register. The |
// register is encoded later as part of the emit_operand operation. |
@@ -824,6 +829,10 @@ class Assembler : public Malloced { |
arithmetic_op_32(0x23, dst, src); |
} |
+ void andl(Register dst, const Operand& src) { |
+ arithmetic_op_32(0x23, dst, src); |
+ } |
+ |
void andb(Register dst, Immediate src) { |
immediate_arithmetic_op_8(0x4, dst, src); |
} |
@@ -1209,6 +1218,9 @@ class Assembler : public Malloced { |
void movsd(XMMRegister dst, XMMRegister src); |
void movsd(XMMRegister dst, const Operand& src); |
+ void movdqa(const Operand& dst, XMMRegister src); |
+ void movdqa(XMMRegister dst, const Operand& src); |
+ |
void movss(XMMRegister dst, const Operand& src); |
void movss(const Operand& dst, XMMRegister src); |
@@ -1249,10 +1261,6 @@ class Assembler : public Malloced { |
void emit_sse_operand(XMMRegister dst, Register src); |
void emit_sse_operand(Register dst, XMMRegister src); |
- // Use either movsd or movlpd. |
- // void movdbl(XMMRegister dst, const Operand& src); |
- // void movdbl(const Operand& dst, XMMRegister src); |
- |
// Debugging |
void Print(); |