| Index: test/unittests/compiler/move-optimizer-unittest.cc | 
| diff --git a/test/unittests/compiler/move-optimizer-unittest.cc b/test/unittests/compiler/move-optimizer-unittest.cc | 
| index 4c693846670393cb3e34fb1d8cd2a2f73d65d160..abbbc8fd102a7d936602dcf25694d372bcffad5e 100644 | 
| --- a/test/unittests/compiler/move-optimizer-unittest.cc | 
| +++ b/test/unittests/compiler/move-optimizer-unittest.cc | 
| @@ -61,6 +61,8 @@ class MoveOptimizerTest : public InstructionSequenceTest { | 
| } | 
|  | 
| private: | 
| +  bool DoesRegisterAllocation() const override { return false; } | 
| + | 
| InstructionOperand ConvertMoveArg(TestOperand op) { | 
| CHECK_EQ(kNoValue, op.vreg_.value_); | 
| CHECK_NE(kNoValue, op.value_); | 
| @@ -70,14 +72,16 @@ class MoveOptimizerTest : public InstructionSequenceTest { | 
| case kFixedSlot: | 
| return AllocatedOperand(LocationOperand::STACK_SLOT, | 
| MachineRepresentation::kWord32, op.value_); | 
| -      case kFixedRegister: | 
| -        CHECK(0 <= op.value_ && op.value_ < num_general_registers()); | 
| -        return AllocatedOperand(LocationOperand::REGISTER, | 
| -                                MachineRepresentation::kWord32, op.value_); | 
| -      case kExplicit: | 
| -        CHECK(0 <= op.value_ && op.value_ < num_general_registers()); | 
| -        return ExplicitOperand(LocationOperand::REGISTER, | 
| -                               MachineRepresentation::kWord32, op.value_); | 
| +      case kFixedRegister: { | 
| +        MachineRepresentation rep = GetCanonicalRep(op); | 
| +        CHECK(0 <= op.value_ && op.value_ < GetNumRegs(rep)); | 
| +        return AllocatedOperand(LocationOperand::REGISTER, rep, op.value_); | 
| +      } | 
| +      case kExplicit: { | 
| +        MachineRepresentation rep = GetCanonicalRep(op); | 
| +        CHECK(0 <= op.value_ && op.value_ < GetNumRegs(rep)); | 
| +        return ExplicitOperand(LocationOperand::REGISTER, rep, op.value_); | 
| +      } | 
| default: | 
| break; | 
| } | 
| @@ -90,31 +94,37 @@ class MoveOptimizerTest : public InstructionSequenceTest { | 
| TEST_F(MoveOptimizerTest, RemovesRedundant) { | 
| StartBlock(); | 
| auto first_instr = EmitNop(); | 
| -  AddMove(first_instr, Reg(0), Reg(1)); | 
| auto last_instr = EmitNop(); | 
| + | 
| +  AddMove(first_instr, Reg(0), Reg(1)); | 
| AddMove(last_instr, Reg(1), Reg(0)); | 
| + | 
| +  AddMove(first_instr, FPReg(0), FPReg(1)); | 
| +  AddMove(last_instr, FPReg(1), FPReg(0)); | 
| + | 
| EndBlock(Last()); | 
|  | 
| Optimize(); | 
|  | 
| CHECK_EQ(0, NonRedundantSize(first_instr->parallel_moves()[0])); | 
| auto move = last_instr->parallel_moves()[0]; | 
| -  CHECK_EQ(1, NonRedundantSize(move)); | 
| +  CHECK_EQ(2, NonRedundantSize(move)); | 
| CHECK(Contains(move, Reg(0), Reg(1))); | 
| +  CHECK(Contains(move, FPReg(0), FPReg(1))); | 
| } | 
|  | 
|  | 
| TEST_F(MoveOptimizerTest, RemovesRedundantExplicit) { | 
| -  int first_reg_index = | 
| -      RegisterConfiguration::Turbofan()->GetAllocatableGeneralCode(0); | 
| -  int second_reg_index = | 
| -      RegisterConfiguration::Turbofan()->GetAllocatableGeneralCode(1); | 
| +  int first_reg_index = GetAllocatableCode(0); | 
| +  int second_reg_index = GetAllocatableCode(1); | 
|  | 
| StartBlock(); | 
| auto first_instr = EmitNop(); | 
| -  AddMove(first_instr, Reg(first_reg_index), ExplicitReg(second_reg_index)); | 
| auto last_instr = EmitNop(); | 
| + | 
| +  AddMove(first_instr, Reg(first_reg_index), ExplicitReg(second_reg_index)); | 
| AddMove(last_instr, Reg(second_reg_index), Reg(first_reg_index)); | 
| + | 
| EndBlock(Last()); | 
|  | 
| Optimize(); | 
| @@ -185,11 +195,16 @@ TEST_F(MoveOptimizerTest, SimpleMergeCycle) { | 
| AddMove(gap_0, Reg(0), Reg(1)); | 
| AddMove(LastInstruction(), Reg(1), Reg(0)); | 
|  | 
| +  AddMove(gap_0, FPReg(0), FPReg(1)); | 
| +  AddMove(LastInstruction(), FPReg(1), FPReg(0)); | 
| + | 
| StartBlock(); | 
| EndBlock(Jump(1)); | 
| auto gap_1 = LastInstruction(); | 
| AddMove(gap_1, Reg(0), Reg(1)); | 
| AddMove(gap_1, Reg(1), Reg(0)); | 
| +  AddMove(gap_1, FPReg(0), FPReg(1)); | 
| +  AddMove(gap_1, FPReg(1), FPReg(0)); | 
|  | 
| StartBlock(); | 
| EndBlock(Last()); | 
| @@ -201,9 +216,11 @@ TEST_F(MoveOptimizerTest, SimpleMergeCycle) { | 
| CHECK(gap_0->AreMovesRedundant()); | 
| CHECK(gap_1->AreMovesRedundant()); | 
| auto move = last->parallel_moves()[0]; | 
| -  CHECK_EQ(2, NonRedundantSize(move)); | 
| +  CHECK_EQ(4, NonRedundantSize(move)); | 
| CHECK(Contains(move, Reg(0), Reg(1))); | 
| CHECK(Contains(move, Reg(1), Reg(0))); | 
| +  CHECK(Contains(move, FPReg(0), FPReg(1))); | 
| +  CHECK(Contains(move, FPReg(1), FPReg(0))); | 
| } | 
|  | 
|  | 
| @@ -325,7 +342,8 @@ TEST_F(MoveOptimizerTest, ClobberedDestinationsAreEliminated) { | 
| EmitNop(); | 
| Instruction* first_instr = LastInstruction(); | 
| AddMove(first_instr, Reg(0), Reg(1)); | 
| -  EmitOI(Reg(1), 0, nullptr); | 
| +  AddMove(first_instr, FPReg(0), FPReg(1)); | 
| +  EmitOOI(Reg(1), FPReg(1), 0, nullptr); | 
| Instruction* last_instr = LastInstruction(); | 
| EndBlock(); | 
| Optimize(); | 
|  |