| Index: runtime/vm/assembler_x64.cc
|
| diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc
|
| index c1d90dbb034c781a6dc39e3329833a2d5f16e1c5..ebeb998bafb5bd9485169727ee61f6af3386b885 100644
|
| --- a/runtime/vm/assembler_x64.cc
|
| +++ b/runtime/vm/assembler_x64.cc
|
| @@ -839,6 +839,62 @@ void Assembler::reciprocalps(XmmRegister dst) {
|
| }
|
|
|
|
|
| +void Assembler::movhlps(XmmRegister dst, XmmRegister src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + EmitREX_RB(dst, src);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x12);
|
| + EmitXmmRegisterOperand(dst & 7, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::movlhps(XmmRegister dst, XmmRegister src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + EmitREX_RB(dst, src);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x16);
|
| + EmitXmmRegisterOperand(dst & 7, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::unpcklps(XmmRegister dst, XmmRegister src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + EmitREX_RB(dst, src);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x14);
|
| + EmitXmmRegisterOperand(dst & 7, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::unpckhps(XmmRegister dst, XmmRegister src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + EmitREX_RB(dst, src);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x15);
|
| + EmitXmmRegisterOperand(dst & 7, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::unpcklpd(XmmRegister dst, XmmRegister src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + EmitUint8(0x66);
|
| + EmitREX_RB(dst, src);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x14);
|
| + EmitXmmRegisterOperand(dst & 7, src);
|
| +}
|
| +
|
| +
|
| +void Assembler::unpckhpd(XmmRegister dst, XmmRegister src) {
|
| + AssemblerBuffer::EnsureCapacity ensured(&buffer_);
|
| + EmitUint8(0x66);
|
| + EmitREX_RB(dst, src);
|
| + EmitUint8(0x0F);
|
| + EmitUint8(0x15);
|
| + EmitXmmRegisterOperand(dst & 7, src);
|
| +}
|
| +
|
| +
|
| void Assembler::set1ps(XmmRegister dst, Register tmp1, const Immediate& imm) {
|
| // Load 32-bit immediate value into tmp1.
|
| movl(tmp1, imm);
|
|
|