| Index: src/x64/macro-assembler-x64.cc
|
| diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
|
| index f797237af523ab64e50017ee9393e40166a84365..c95f8aeb84b75238b66d80b8bec8aa18aed6e252 100644
|
| --- a/src/x64/macro-assembler-x64.cc
|
| +++ b/src/x64/macro-assembler-x64.cc
|
| @@ -2754,6 +2754,23 @@ void MacroAssembler::Movapd(XMMRegister dst, XMMRegister src) {
|
| }
|
| }
|
|
|
| +void MacroAssembler::Movupd(XMMRegister dst, const Operand& src) {
|
| + if (CpuFeatures::IsSupported(AVX)) {
|
| + CpuFeatureScope scope(this, AVX);
|
| + vmovupd(dst, src);
|
| + } else {
|
| + movupd(dst, src);
|
| + }
|
| +}
|
| +
|
| +void MacroAssembler::Movupd(const Operand& dst, XMMRegister src) {
|
| + if (CpuFeatures::IsSupported(AVX)) {
|
| + CpuFeatureScope scope(this, AVX);
|
| + vmovupd(dst, src);
|
| + } else {
|
| + movupd(dst, src);
|
| + }
|
| +}
|
|
|
| void MacroAssembler::Movsd(XMMRegister dst, XMMRegister src) {
|
| if (CpuFeatures::IsSupported(AVX)) {
|
| @@ -2973,6 +2990,27 @@ void MacroAssembler::Ucomisd(XMMRegister src1, const Operand& src2) {
|
| }
|
| }
|
|
|
| +// ----------------------------------------------------------------------------
|
| +
|
| +void MacroAssembler::Absps(XMMRegister dst) {
|
| + Andps(dst,
|
| + ExternalOperand(ExternalReference::address_of_float_abs_constant()));
|
| +}
|
| +
|
| +void MacroAssembler::Negps(XMMRegister dst) {
|
| + Xorps(dst,
|
| + ExternalOperand(ExternalReference::address_of_float_neg_constant()));
|
| +}
|
| +
|
| +void MacroAssembler::Abspd(XMMRegister dst) {
|
| + Andps(dst,
|
| + ExternalOperand(ExternalReference::address_of_double_abs_constant()));
|
| +}
|
| +
|
| +void MacroAssembler::Negpd(XMMRegister dst) {
|
| + Xorps(dst,
|
| + ExternalOperand(ExternalReference::address_of_double_neg_constant()));
|
| +}
|
|
|
| void MacroAssembler::Cmp(Register dst, Handle<Object> source) {
|
| AllowDeferredHandleDereference smi_check;
|
|
|