Index: src/x64/assembler-x64.cc |
diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc |
index abdf7a5d9c9fac54006a24e2cec39efc4e7d55b5..091ae6c52e8bb5a0824a5f414f7781709568b3ab 100644 |
--- a/src/x64/assembler-x64.cc |
+++ b/src/x64/assembler-x64.cc |
@@ -2847,6 +2847,66 @@ void Assembler::divss(XMMRegister dst, const Operand& src) { |
} |
+void Assembler::maxss(XMMRegister dst, XMMRegister src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF3); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5F); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::maxss(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF3); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5F); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::minss(XMMRegister dst, XMMRegister src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF3); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5D); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::minss(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF3); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5D); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::sqrtss(XMMRegister dst, XMMRegister src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF3); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x51); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::sqrtss(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF3); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x51); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
void Assembler::ucomiss(XMMRegister dst, XMMRegister src) { |
EnsureSpace ensure_space(this); |
emit_optional_rex_32(dst, src); |
@@ -3179,6 +3239,46 @@ void Assembler::divsd(XMMRegister dst, const Operand& src) { |
} |
+void Assembler::maxsd(XMMRegister dst, XMMRegister src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF2); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5F); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::maxsd(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF2); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5F); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::minsd(XMMRegister dst, XMMRegister src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF2); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5D); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::minsd(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ emit(0xF2); |
+ emit_optional_rex_32(dst, src); |
+ emit(0x0F); |
+ emit(0x5D); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
void Assembler::andpd(XMMRegister dst, XMMRegister src) { |
EnsureSpace ensure_space(this); |
emit(0x66); |
@@ -3323,46 +3423,6 @@ void Assembler::punpckhdq(XMMRegister dst, XMMRegister src) { |
} |
-void Assembler::maxsd(XMMRegister dst, XMMRegister src) { |
- EnsureSpace ensure_space(this); |
- emit(0xF2); |
- emit_optional_rex_32(dst, src); |
- emit(0x0F); |
- emit(0x5F); |
- emit_sse_operand(dst, src); |
-} |
- |
- |
-void Assembler::maxsd(XMMRegister dst, const Operand& src) { |
- EnsureSpace ensure_space(this); |
- emit(0xF2); |
- emit_optional_rex_32(dst, src); |
- emit(0x0F); |
- emit(0x5F); |
- emit_sse_operand(dst, src); |
-} |
- |
- |
-void Assembler::minsd(XMMRegister dst, XMMRegister src) { |
- EnsureSpace ensure_space(this); |
- emit(0xF2); |
- emit_optional_rex_32(dst, src); |
- emit(0x0F); |
- emit(0x5D); |
- emit_sse_operand(dst, src); |
-} |
- |
- |
-void Assembler::minsd(XMMRegister dst, const Operand& src) { |
- EnsureSpace ensure_space(this); |
- emit(0xF2); |
- emit_optional_rex_32(dst, src); |
- emit(0x0F); |
- emit(0x5D); |
- emit_sse_operand(dst, src); |
-} |
- |
- |
// AVX instructions |
void Assembler::vfmasd(byte op, XMMRegister dst, XMMRegister src1, |
XMMRegister src2) { |
@@ -3404,6 +3464,24 @@ void Assembler::vfmass(byte op, XMMRegister dst, XMMRegister src1, |
} |
+void Assembler::vucomisd(XMMRegister dst, XMMRegister src) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(dst, xmm0, src, kLIG, k66, k0F, kWIG); |
+ emit(0x2e); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::vucomisd(XMMRegister dst, const Operand& src) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(dst, xmm0, src, kLIG, k66, k0F, kWIG); |
+ emit(0x2e); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
void Assembler::vsd(byte op, XMMRegister dst, XMMRegister src1, |
XMMRegister src2) { |
DCHECK(IsEnabled(AVX)); |
@@ -3424,6 +3502,44 @@ void Assembler::vsd(byte op, XMMRegister dst, XMMRegister src1, |
} |
+void Assembler::vucomiss(XMMRegister dst, XMMRegister src) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(dst, xmm0, src, kLIG, kNone, k0F, kWIG); |
+ emit(0x2e); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::vucomiss(XMMRegister dst, const Operand& src) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(dst, xmm0, src, kLIG, kNone, k0F, kWIG); |
+ emit(0x2e); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1, |
+ XMMRegister src2) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(dst, src1, src2, kLIG, kF3, k0F, kWIG); |
+ emit(op); |
+ emit_sse_operand(dst, src2); |
+} |
+ |
+ |
+void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1, |
+ const Operand& src2) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(dst, src1, src2, kLIG, kF3, k0F, kWIG); |
+ emit(op); |
+ emit_sse_operand(dst, src2); |
+} |
+ |
+ |
void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) { |
Register ireg = { reg.code() }; |
emit_operand(ireg, adr); |