| Index: src/ia32/macro-assembler-ia32.cc
|
| diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc
|
| index 8616848e8a5ba2f93fe0779e9b7b4f025d00770f..9a0c8d6be268f2ea376191da818586312e5f94a1 100644
|
| --- a/src/ia32/macro-assembler-ia32.cc
|
| +++ b/src/ia32/macro-assembler-ia32.cc
|
| @@ -2661,20 +2661,19 @@ void MacroAssembler::Move(XMMRegister dst, uint64_t src) {
|
| } else if (lower == 0) {
|
| Move(dst, upper);
|
| psllq(dst, 32);
|
| - } else {
|
| + } else if (CpuFeatures::IsSupported(SSE4_1)) {
|
| + CpuFeatureScope scope(this, SSE4_1);
|
| push(eax);
|
| Move(eax, Immediate(lower));
|
| movd(dst, Operand(eax));
|
| Move(eax, Immediate(upper));
|
| - if (CpuFeatures::IsSupported(SSE4_1)) {
|
| - CpuFeatureScope scope(this, SSE4_1);
|
| - pinsrd(dst, Operand(eax), 1);
|
| - } else {
|
| - psllq(dst, 32);
|
| - movd(xmm0, Operand(eax));
|
| - orpd(dst, xmm0);
|
| - }
|
| + pinsrd(dst, Operand(eax), 1);
|
| pop(eax);
|
| + } else {
|
| + push(Immediate(upper));
|
| + push(Immediate(lower));
|
| + movsd(dst, Operand(esp, 0));
|
| + add(esp, Immediate(kDoubleSize));
|
| }
|
| }
|
| }
|
|
|