Index: src/ia32/assembler-ia32.cc |
diff --git a/src/ia32/assembler-ia32.cc b/src/ia32/assembler-ia32.cc |
index e22688334da178c9132934bbb70f761954c53d09..a0e8ad20df68fbe60b0036ccf533d0aa6c5c1209 100644 |
--- a/src/ia32/assembler-ia32.cc |
+++ b/src/ia32/assembler-ia32.cc |
@@ -2665,6 +2665,15 @@ void Assembler::pextrd(const Operand& dst, XMMRegister src, int8_t offset) { |
EMIT(offset); |
} |
+void Assembler::pinsrw(XMMRegister dst, const Operand& src, int8_t offset) { |
+ DCHECK(is_uint8(offset)); |
+ EnsureSpace ensure_space(this); |
+ EMIT(0x66); |
+ EMIT(0x0F); |
+ EMIT(0xC4); |
+ emit_sse_operand(dst, src); |
+ EMIT(offset); |
+} |
void Assembler::pinsrd(XMMRegister dst, const Operand& src, int8_t offset) { |
DCHECK(IsEnabled(SSE4_1)); |
@@ -2870,6 +2879,24 @@ void Assembler::rorx(Register dst, const Operand& src, byte imm8) { |
EMIT(imm8); |
} |
+void Assembler::sse2_instr(XMMRegister dst, const Operand& src, byte prefix, |
+ byte escape, byte opcode) { |
+ EnsureSpace ensure_space(this); |
+ EMIT(prefix); |
+ EMIT(escape); |
+ EMIT(opcode); |
+ emit_sse_operand(dst, src); |
+} |
+ |
+void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1, |
+ const Operand& src2, SIMDPrefix pp, LeadingOpcode m, |
+ VexW w) { |
+ DCHECK(IsEnabled(AVX)); |
+ EnsureSpace ensure_space(this); |
+ emit_vex_prefix(src1, kL128, pp, m, w); |
+ EMIT(op); |
+ emit_sse_operand(dst, src2); |
+} |
void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) { |
Register ireg = { reg.code() }; |