| Index: src/compiler/ia32/code-generator-ia32.cc
|
| diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc
|
| index 7c622be49e0cbc6fde58c0fbeb0065e5e4a8892e..a9083e13510e855c38ec96cdfbe3d11c858e9781 100644
|
| --- a/src/compiler/ia32/code-generator-ia32.cc
|
| +++ b/src/compiler/ia32/code-generator-ia32.cc
|
| @@ -44,11 +44,11 @@ class IA32OperandConverter : public InstructionOperandConverter {
|
| if (op->IsRegister()) {
|
| DCHECK(extra == 0);
|
| return Operand(ToRegister(op));
|
| - } else if (op->IsDoubleRegister()) {
|
| + } else if (op->IsFPRegister()) {
|
| DCHECK(extra == 0);
|
| return Operand(ToDoubleRegister(op));
|
| }
|
| - DCHECK(op->IsStackSlot() || op->IsDoubleStackSlot());
|
| + DCHECK(op->IsStackSlot() || op->IsFPStackSlot());
|
| return SlotToOperand(AllocatedOperand::cast(op)->index(), extra);
|
| }
|
|
|
| @@ -59,7 +59,7 @@ class IA32OperandConverter : public InstructionOperandConverter {
|
| }
|
|
|
| Operand HighOperand(InstructionOperand* op) {
|
| - DCHECK(op->IsDoubleStackSlot());
|
| + DCHECK(op->IsFPStackSlot());
|
| return ToOperand(op, kPointerSize);
|
| }
|
|
|
| @@ -981,14 +981,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| __ LoadUint32(i.OutputDoubleRegister(), i.InputOperand(0));
|
| break;
|
| case kSSEFloat64ExtractLowWord32:
|
| - if (instr->InputAt(0)->IsDoubleStackSlot()) {
|
| + if (instr->InputAt(0)->IsFPStackSlot()) {
|
| __ mov(i.OutputRegister(), i.InputOperand(0));
|
| } else {
|
| __ movd(i.OutputRegister(), i.InputDoubleRegister(0));
|
| }
|
| break;
|
| case kSSEFloat64ExtractHighWord32:
|
| - if (instr->InputAt(0)->IsDoubleStackSlot()) {
|
| + if (instr->InputAt(0)->IsFPStackSlot()) {
|
| __ mov(i.OutputRegister(), i.InputOperand(0, kDoubleSize / 2));
|
| } else {
|
| __ Pextrd(i.OutputRegister(), i.InputDoubleRegister(0), 1);
|
| @@ -1177,7 +1177,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| }
|
| break;
|
| case kIA32BitcastFI:
|
| - if (instr->InputAt(0)->IsDoubleStackSlot()) {
|
| + if (instr->InputAt(0)->IsFPStackSlot()) {
|
| __ mov(i.OutputRegister(), i.InputOperand(0));
|
| } else {
|
| __ movd(i.OutputRegister(), i.InputDoubleRegister(0));
|
| @@ -1226,7 +1226,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| break;
|
| }
|
| case kIA32PushFloat32:
|
| - if (instr->InputAt(0)->IsDoubleRegister()) {
|
| + if (instr->InputAt(0)->IsFPRegister()) {
|
| __ sub(esp, Immediate(kDoubleSize));
|
| __ movss(Operand(esp, 0), i.InputDoubleRegister(0));
|
| frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
|
| @@ -1243,7 +1243,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| }
|
| break;
|
| case kIA32PushFloat64:
|
| - if (instr->InputAt(0)->IsDoubleRegister()) {
|
| + if (instr->InputAt(0)->IsFPRegister()) {
|
| __ sub(esp, Immediate(kDoubleSize));
|
| __ movsd(Operand(esp, 0), i.InputDoubleRegister(0));
|
| frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
|
| @@ -1260,7 +1260,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
|
| }
|
| break;
|
| case kIA32Push:
|
| - if (instr->InputAt(0)->IsDoubleRegister()) {
|
| + if (instr->InputAt(0)->IsFPRegister()) {
|
| __ sub(esp, Immediate(kDoubleSize));
|
| __ movsd(Operand(esp, 0), i.InputDoubleRegister(0));
|
| frame_access_state()->IncreaseSPDelta(kDoubleSize / kPointerSize);
|
| @@ -1816,11 +1816,11 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
|
| } else if (src_constant.type() == Constant::kFloat32) {
|
| // TODO(turbofan): Can we do better here?
|
| uint32_t src = bit_cast<uint32_t>(src_constant.ToFloat32());
|
| - if (destination->IsDoubleRegister()) {
|
| + if (destination->IsFPRegister()) {
|
| XMMRegister dst = g.ToDoubleRegister(destination);
|
| __ Move(dst, src);
|
| } else {
|
| - DCHECK(destination->IsDoubleStackSlot());
|
| + DCHECK(destination->IsFPStackSlot());
|
| Operand dst = g.ToOperand(destination);
|
| __ Move(dst, Immediate(src));
|
| }
|
| @@ -1829,31 +1829,31 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
|
| uint64_t src = bit_cast<uint64_t>(src_constant.ToFloat64());
|
| uint32_t lower = static_cast<uint32_t>(src);
|
| uint32_t upper = static_cast<uint32_t>(src >> 32);
|
| - if (destination->IsDoubleRegister()) {
|
| + if (destination->IsFPRegister()) {
|
| XMMRegister dst = g.ToDoubleRegister(destination);
|
| __ Move(dst, src);
|
| } else {
|
| - DCHECK(destination->IsDoubleStackSlot());
|
| + DCHECK(destination->IsFPStackSlot());
|
| Operand dst0 = g.ToOperand(destination);
|
| Operand dst1 = g.HighOperand(destination);
|
| __ Move(dst0, Immediate(lower));
|
| __ Move(dst1, Immediate(upper));
|
| }
|
| }
|
| - } else if (source->IsDoubleRegister()) {
|
| + } else if (source->IsFPRegister()) {
|
| XMMRegister src = g.ToDoubleRegister(source);
|
| - if (destination->IsDoubleRegister()) {
|
| + if (destination->IsFPRegister()) {
|
| XMMRegister dst = g.ToDoubleRegister(destination);
|
| __ movaps(dst, src);
|
| } else {
|
| - DCHECK(destination->IsDoubleStackSlot());
|
| + DCHECK(destination->IsFPStackSlot());
|
| Operand dst = g.ToOperand(destination);
|
| __ movsd(dst, src);
|
| }
|
| - } else if (source->IsDoubleStackSlot()) {
|
| - DCHECK(destination->IsDoubleRegister() || destination->IsDoubleStackSlot());
|
| + } else if (source->IsFPStackSlot()) {
|
| + DCHECK(destination->IsFPRegister() || destination->IsFPStackSlot());
|
| Operand src = g.ToOperand(source);
|
| - if (destination->IsDoubleRegister()) {
|
| + if (destination->IsFPRegister()) {
|
| XMMRegister dst = g.ToDoubleRegister(destination);
|
| __ movsd(dst, src);
|
| } else {
|
| @@ -1901,21 +1901,21 @@ void CodeGenerator::AssembleSwap(InstructionOperand* source,
|
| frame_access_state()->IncreaseSPDelta(-1);
|
| Operand src2 = g.ToOperand(source);
|
| __ pop(src2);
|
| - } else if (source->IsDoubleRegister() && destination->IsDoubleRegister()) {
|
| + } else if (source->IsFPRegister() && destination->IsFPRegister()) {
|
| // XMM register-register swap.
|
| XMMRegister src = g.ToDoubleRegister(source);
|
| XMMRegister dst = g.ToDoubleRegister(destination);
|
| __ movaps(kScratchDoubleReg, src);
|
| __ movaps(src, dst);
|
| __ movaps(dst, kScratchDoubleReg);
|
| - } else if (source->IsDoubleRegister() && destination->IsDoubleStackSlot()) {
|
| + } else if (source->IsFPRegister() && destination->IsFPStackSlot()) {
|
| // XMM register-memory swap.
|
| XMMRegister reg = g.ToDoubleRegister(source);
|
| Operand other = g.ToOperand(destination);
|
| __ movsd(kScratchDoubleReg, other);
|
| __ movsd(other, reg);
|
| __ movaps(reg, kScratchDoubleReg);
|
| - } else if (source->IsDoubleStackSlot() && destination->IsDoubleStackSlot()) {
|
| + } else if (source->IsFPStackSlot() && destination->IsFPStackSlot()) {
|
| // Double-width memory-to-memory.
|
| Operand src0 = g.ToOperand(source);
|
| Operand src1 = g.HighOperand(source);
|
|
|