Index: src/ia32/assembler-ia32.cc |
diff --git a/src/ia32/assembler-ia32.cc b/src/ia32/assembler-ia32.cc |
index 2a3384d68d6fbe965a1285e34108715163c45e69..35eb6ac80a80510ed24b7b7c1a570e0909559cd0 100644 |
--- a/src/ia32/assembler-ia32.cc |
+++ b/src/ia32/assembler-ia32.cc |
@@ -2581,6 +2581,15 @@ void Assembler::divss(XMMRegister dst, const Operand& src) { |
} |
+void Assembler::sqrtss(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ EMIT(0xF3); |
+ EMIT(0x0F); |
+ EMIT(0x51); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
void Assembler::ucomiss(XMMRegister dst, const Operand& src) { |
EnsureSpace ensure_space(this); |
EMIT(0x0f); |
@@ -2589,6 +2598,24 @@ void Assembler::ucomiss(XMMRegister dst, const Operand& src) { |
} |
+void Assembler::maxss(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ EMIT(0xF3); |
+ EMIT(0x0F); |
+ EMIT(0x5F); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
+void Assembler::minss(XMMRegister dst, const Operand& src) { |
+ EnsureSpace ensure_space(this); |
+ EMIT(0xF3); |
+ EMIT(0x0F); |
+ EMIT(0x5D); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+ |
// AVX instructions |
void Assembler::vfmasd(byte op, XMMRegister dst, XMMRegister src1, |
const Operand& src2) { |
@@ -2620,6 +2647,16 @@ void Assembler::vsd(byte op, XMMRegister dst, XMMRegister src1, |
} |
+void Assembler::vss(byte op, XMMRegister dst, XMMRegister src1, |
+ const Operand& src2) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(src1, 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); |