| 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() };
|
|
|