summaryrefslogtreecommitdiff
path: root/deps/v8/src/ia32/assembler-ia32.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/ia32/assembler-ia32.h')
-rw-r--r--deps/v8/src/ia32/assembler-ia32.h44
1 files changed, 38 insertions, 6 deletions
diff --git a/deps/v8/src/ia32/assembler-ia32.h b/deps/v8/src/ia32/assembler-ia32.h
index f4e495c36b..76594f7bd4 100644
--- a/deps/v8/src/ia32/assembler-ia32.h
+++ b/deps/v8/src/ia32/assembler-ia32.h
@@ -103,8 +103,8 @@ class Register : public RegisterBase<Register, kRegAfterLast> {
explicit constexpr Register(int code) : RegisterBase(code) {}
};
-static_assert(IS_TRIVIALLY_COPYABLE(Register) &&
- sizeof(Register) == sizeof(int),
+ASSERT_TRIVIALLY_COPYABLE(Register);
+static_assert(sizeof(Register) == sizeof(int),
"Register can efficiently be passed by value");
#define DEFINE_REGISTER(R) \
@@ -422,10 +422,9 @@ class Operand {
// TODO(clemensh): Get rid of this friendship, or make Operand immutable.
friend class Assembler;
};
+ASSERT_TRIVIALLY_COPYABLE(Operand);
static_assert(sizeof(Operand) <= 2 * kPointerSize,
"Operand must be small enough to pass it by value");
-static_assert(IS_TRIVIALLY_COPYABLE(Operand),
- "Operand must be trivially copyable to pass it by value");
// -----------------------------------------------------------------------------
// A Displacement describes the 32bit immediate field of an instruction which
@@ -677,6 +676,7 @@ class Assembler : public AssemblerBase {
// Arithmetics
void adc(Register dst, int32_t imm32);
+ void adc(Register dst, Register src) { adc(dst, Operand(src)); }
void adc(Register dst, Operand src);
void add(Register dst, Register src) { add(dst, Operand(src)); }
@@ -767,6 +767,7 @@ class Assembler : public AssemblerBase {
void sar_cl(Register dst) { sar_cl(Operand(dst)); }
void sar_cl(Operand dst);
+ void sbb(Register dst, Register src) { sbb(dst, Operand(src)); }
void sbb(Register dst, Operand src);
void shl(Register dst, uint8_t imm8) { shl(Operand(dst), imm8); }
@@ -1064,8 +1065,10 @@ class Assembler : public AssemblerBase {
void sqrtsd(XMMRegister dst, XMMRegister src) { sqrtsd(dst, Operand(src)); }
void sqrtsd(XMMRegister dst, Operand src);
- void andpd(XMMRegister dst, XMMRegister src);
- void orpd(XMMRegister dst, XMMRegister src);
+ void andpd(XMMRegister dst, XMMRegister src) { andpd(dst, Operand(src)); }
+ void andpd(XMMRegister dst, Operand src);
+ void orpd(XMMRegister dst, XMMRegister src) { orpd(dst, Operand(src)); }
+ void orpd(XMMRegister dst, Operand src);
void ucomisd(XMMRegister dst, XMMRegister src) { ucomisd(dst, Operand(src)); }
void ucomisd(XMMRegister dst, Operand src);
@@ -1130,6 +1133,11 @@ class Assembler : public AssemblerBase {
}
void pshufd(XMMRegister dst, Operand src, uint8_t shuffle);
+ void pblendw(XMMRegister dst, XMMRegister src, uint8_t mask) {
+ pblendw(dst, Operand(src), mask);
+ }
+ void pblendw(XMMRegister dst, Operand src, uint8_t mask);
+
void pextrb(Register dst, XMMRegister src, int8_t offset) {
pextrb(Operand(dst), src, offset);
}
@@ -1346,6 +1354,12 @@ class Assembler : public AssemblerBase {
void vminsd(XMMRegister dst, XMMRegister src1, Operand src2) {
vsd(0x5d, dst, src1, src2);
}
+ void vsqrtsd(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
+ vsqrtsd(dst, src1, Operand(src2));
+ }
+ void vsqrtsd(XMMRegister dst, XMMRegister src1, Operand src2) {
+ vsd(0x51, dst, src1, src2);
+ }
void vsd(byte op, XMMRegister dst, XMMRegister src1, Operand src2);
void vaddss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
@@ -1384,6 +1398,12 @@ class Assembler : public AssemblerBase {
void vminss(XMMRegister dst, XMMRegister src1, Operand src2) {
vss(0x5d, dst, src1, src2);
}
+ void vsqrtss(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
+ vsqrtss(dst, src1, Operand(src2));
+ }
+ void vsqrtss(XMMRegister dst, XMMRegister src1, Operand src2) {
+ vss(0x51, dst, src1, src2);
+ }
void vss(byte op, XMMRegister dst, XMMRegister src1, Operand src2);
void vrcpps(XMMRegister dst, XMMRegister src) { vrcpps(dst, Operand(src)); }
@@ -1396,6 +1416,12 @@ class Assembler : public AssemblerBase {
void vrsqrtps(XMMRegister dst, Operand src) {
vinstr(0x52, dst, xmm0, src, kNone, k0F, kWIG);
}
+ void vhaddps(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
+ vhaddps(dst, src1, Operand(src2));
+ }
+ void vhaddps(XMMRegister dst, XMMRegister src1, Operand src2) {
+ vinstr(0x7C, dst, src1, src2, kF2, k0F, kWIG);
+ }
void vmovaps(XMMRegister dst, XMMRegister src) {
vps(0x28, dst, xmm0, Operand(src));
}
@@ -1420,6 +1446,12 @@ class Assembler : public AssemblerBase {
}
void vpshufd(XMMRegister dst, Operand src, uint8_t shuffle);
+ void vpblendw(XMMRegister dst, XMMRegister src1, XMMRegister src2,
+ uint8_t mask) {
+ vpblendw(dst, src1, Operand(src2), mask);
+ }
+ void vpblendw(XMMRegister dst, XMMRegister src1, Operand src2, uint8_t mask);
+
void vpextrb(Register dst, XMMRegister src, int8_t offset) {
vpextrb(Operand(dst), src, offset);
}