| Index: src/ia32/assembler-ia32.h
|
| diff --git a/src/ia32/assembler-ia32.h b/src/ia32/assembler-ia32.h
|
| index 6ed0bc6d6625d092fec6170a991d77123197c310..4ce787dae34ae9e03c27f309f62ee9d1df8b67b1 100644
|
| --- a/src/ia32/assembler-ia32.h
|
| +++ b/src/ia32/assembler-ia32.h
|
| @@ -219,6 +219,8 @@ struct XMMRegister : IntelDoubleRegister {
|
| }
|
| };
|
|
|
| +typedef XMMRegister Float32x4Register;
|
| +typedef XMMRegister Int32x4Register;
|
|
|
| #define xmm0 (static_cast<const XMMRegister&>(double_register_0))
|
| #define xmm1 (static_cast<const XMMRegister&>(double_register_1))
|
| @@ -390,7 +392,8 @@ class Operand BASE_EMBEDDED {
|
| INLINE(explicit Operand(XMMRegister xmm_reg));
|
|
|
| // [disp/r]
|
| - INLINE(explicit Operand(int32_t disp, RelocInfo::Mode rmode));
|
| + INLINE(explicit Operand(int32_t disp,
|
| + RelocInfo::Mode rmode = RelocInfo::NONE32));
|
| // disp only must always be relocated
|
|
|
| // [base + disp/r]
|
| @@ -410,6 +413,11 @@ class Operand BASE_EMBEDDED {
|
| int32_t disp,
|
| RelocInfo::Mode rmode = RelocInfo::NONE32);
|
|
|
| + // Offset from existing memory operand.
|
| + // Offset is added to existing displacement as 32-bit signed values and
|
| + // this must not overflow.
|
| + Operand(const Operand& base, int32_t offset);
|
| +
|
| static Operand StaticVariable(const ExternalReference& ext) {
|
| return Operand(reinterpret_cast<int32_t>(ext.address()),
|
| RelocInfo::EXTERNAL_REFERENCE);
|
| @@ -1014,6 +1022,8 @@ class Assembler : public AssemblerBase {
|
| // SSE instructions
|
| void movaps(XMMRegister dst, XMMRegister src);
|
| void shufps(XMMRegister dst, XMMRegister src, byte imm8);
|
| + void movups(XMMRegister dst, const Operand& src);
|
| + void movups(const Operand& dst, XMMRegister src);
|
|
|
| void andps(XMMRegister dst, const Operand& src);
|
| void andps(XMMRegister dst, XMMRegister src) { andps(dst, Operand(src)); }
|
| @@ -1030,6 +1040,48 @@ class Assembler : public AssemblerBase {
|
| void mulps(XMMRegister dst, XMMRegister src) { mulps(dst, Operand(src)); }
|
| void divps(XMMRegister dst, const Operand& src);
|
| void divps(XMMRegister dst, XMMRegister src) { divps(dst, Operand(src)); }
|
| + void minps(XMMRegister dst, XMMRegister src) { minps(dst, Operand(src)); }
|
| + void minps(XMMRegister dst, const Operand& src);
|
| + void maxps(XMMRegister dst, XMMRegister src) { maxps(dst, Operand(src)); }
|
| + void maxps(XMMRegister dst, const Operand& src);
|
| + void rcpps(XMMRegister dst, XMMRegister src) { rcpps(dst, Operand(src)); }
|
| + void rcpps(XMMRegister dst, const Operand& src);
|
| + void rsqrtps(XMMRegister dst, XMMRegister src) { rsqrtps(dst, Operand(src)); }
|
| + void rsqrtps(XMMRegister dst, const Operand& src);
|
| + void sqrtps(XMMRegister dst, XMMRegister src) { sqrtps(dst, Operand(src)); }
|
| + void sqrtps(XMMRegister dst, const Operand& src);
|
| +
|
| + void cvtdq2ps(XMMRegister dst, const Operand& src);
|
| + void cmpps(XMMRegister dst, XMMRegister src, int8_t cmp);
|
| + void cmpeqps(XMMRegister dst, XMMRegister src);
|
| + void cmpltps(XMMRegister dst, XMMRegister src);
|
| + void cmpleps(XMMRegister dst, XMMRegister src);
|
| + void cmpneqps(XMMRegister dst, XMMRegister src);
|
| + void cmpnltps(XMMRegister dst, XMMRegister src);
|
| + void cmpnleps(XMMRegister dst, XMMRegister src);
|
| +
|
| + // SSE 2, introduced by SIMD
|
| + void paddd(XMMRegister dst, XMMRegister src) { paddd(dst, Operand(src)); }
|
| + void paddd(XMMRegister dst, const Operand& src);
|
| + void psubd(XMMRegister dst, XMMRegister src) { psubd(dst, Operand(src)); }
|
| + void psubd(XMMRegister dst, const Operand& src);
|
| + void pmuludq(XMMRegister dst, XMMRegister src) { pmuludq(dst, Operand(src)); }
|
| + void pmuludq(XMMRegister dst, const Operand& src);
|
| + void punpackldq(XMMRegister dst, XMMRegister src) {
|
| + punpackldq(dst, Operand(src));
|
| + }
|
| + void punpackldq(XMMRegister dst, const Operand& src);
|
| + void cvtps2dq(XMMRegister dst, XMMRegister src) {
|
| + cvtps2dq(dst, Operand(src));
|
| + }
|
| + void cvtps2dq(XMMRegister dst, const Operand& src);
|
| + void cvtdq2ps(XMMRegister dst, XMMRegister src) {
|
| + cvtdq2ps(dst, Operand(src));
|
| + }
|
| + // SSE 4.1, introduced by SIMD
|
| + void insertps(XMMRegister dst, XMMRegister src, byte imm8);
|
| + void pmulld(XMMRegister dst, XMMRegister src) { pmulld(dst, Operand(src)); }
|
| + void pmulld(XMMRegister dst, const Operand& src);
|
|
|
| // SSE2 instructions
|
| void cvttss2si(Register dst, const Operand& src);
|
|
|