Index: src/x64/assembler-x64.h |
diff --git a/src/x64/assembler-x64.h b/src/x64/assembler-x64.h |
index c715bcef96531429aa0ba2c1f897da424cf303c1..508c62211237f61d7f78198db4730e9848718064 100644 |
--- a/src/x64/assembler-x64.h |
+++ b/src/x64/assembler-x64.h |
@@ -1346,13 +1346,26 @@ class Assembler : public AssemblerBase { |
void sahf(); |
+ // SSE instructions |
+ void movaps(XMMRegister dst, XMMRegister src); |
+ void movss(XMMRegister dst, const Operand& src); |
+ void movss(const Operand& dst, XMMRegister src); |
+ |
+ void cvttss2si(Register dst, const Operand& src); |
+ void cvttss2si(Register dst, XMMRegister src); |
+ void cvtlsi2ss(XMMRegister dst, Register src); |
+ |
+ void xorps(XMMRegister dst, XMMRegister src); |
+ void andps(XMMRegister dst, XMMRegister src); |
+ |
+ void movmskps(Register dst, XMMRegister src); |
+ |
// SSE2 instructions |
void movd(XMMRegister dst, Register src); |
void movd(Register dst, XMMRegister src); |
void movq(XMMRegister dst, Register src); |
void movq(Register dst, XMMRegister src); |
void movq(XMMRegister dst, XMMRegister src); |
- void extractps(Register dst, XMMRegister src, byte imm8); |
// Don't use this unless it's important to keep the |
// top half of the destination register unchanged. |
@@ -1370,13 +1383,7 @@ class Assembler : public AssemblerBase { |
void movdqu(XMMRegister dst, const Operand& src); |
void movapd(XMMRegister dst, XMMRegister src); |
- void movaps(XMMRegister dst, XMMRegister src); |
- |
- void movss(XMMRegister dst, const Operand& src); |
- void movss(const Operand& dst, XMMRegister src); |
- void cvttss2si(Register dst, const Operand& src); |
- void cvttss2si(Register dst, XMMRegister src); |
void cvttsd2si(Register dst, const Operand& src); |
void cvttsd2si(Register dst, XMMRegister src); |
void cvttsd2siq(Register dst, XMMRegister src); |
@@ -1386,7 +1393,6 @@ class Assembler : public AssemblerBase { |
void cvtqsi2sd(XMMRegister dst, const Operand& src); |
void cvtqsi2sd(XMMRegister dst, Register src); |
- void cvtlsi2ss(XMMRegister dst, Register src); |
void cvtss2sd(XMMRegister dst, XMMRegister src); |
void cvtss2sd(XMMRegister dst, const Operand& src); |
@@ -1405,11 +1411,16 @@ class Assembler : public AssemblerBase { |
void andpd(XMMRegister dst, XMMRegister src); |
void orpd(XMMRegister dst, XMMRegister src); |
void xorpd(XMMRegister dst, XMMRegister src); |
- void xorps(XMMRegister dst, XMMRegister src); |
void sqrtsd(XMMRegister dst, XMMRegister src); |
void ucomisd(XMMRegister dst, XMMRegister src); |
void ucomisd(XMMRegister dst, const Operand& src); |
+ void cmpltsd(XMMRegister dst, XMMRegister src); |
+ |
+ void movmskpd(Register dst, XMMRegister src); |
+ |
+ // SSE 4.1 instruction |
+ void extractps(Register dst, XMMRegister src, byte imm8); |
enum RoundingMode { |
kRoundToNearest = 0x0, |
@@ -1420,17 +1431,6 @@ class Assembler : public AssemblerBase { |
void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); |
- void movmskpd(Register dst, XMMRegister src); |
- void movmskps(Register dst, XMMRegister src); |
- |
- void cmpltsd(XMMRegister dst, XMMRegister src); |
- |
- // The first argument is the reg field, the second argument is the r/m field. |
- void emit_sse_operand(XMMRegister dst, XMMRegister src); |
- void emit_sse_operand(XMMRegister reg, const Operand& adr); |
- void emit_sse_operand(XMMRegister dst, Register src); |
- void emit_sse_operand(Register dst, XMMRegister src); |
- |
// Debugging |
void Print(); |
@@ -1611,6 +1611,12 @@ class Assembler : public AssemblerBase { |
// Emit the code-object-relative offset of the label's position |
inline void emit_code_relative_offset(Label* label); |
+ // The first argument is the reg field, the second argument is the r/m field. |
+ void emit_sse_operand(XMMRegister dst, XMMRegister src); |
+ void emit_sse_operand(XMMRegister reg, const Operand& adr); |
+ void emit_sse_operand(XMMRegister dst, Register src); |
+ void emit_sse_operand(Register dst, XMMRegister src); |
+ |
// Emit machine code for one of the operations ADD, ADC, SUB, SBC, |
// AND, OR, XOR, or CMP. The encodings of these operations are all |
// similar, differing just in the opcode or in the reg field of the |