Home | History | Annotate | Download | only in optimizing

Lines Matching defs:move

304     // We spill eagerly, so move must be at definition.
375 // insert a move.
509 void RegisterAllocationResolver::AddMove(HParallelMove* move,
516 // The parallel move resolver knows how to deal with long constants.
518 move->AddMove(source.ToLow(), destination.ToLow(), DataType::Type::kInt32, instruction);
519 move->AddMove(source.ToHigh(), destination.ToHigh(), DataType::Type::kInt32, nullptr);
521 move->AddMove(source, destination, type, instruction);
534 HParallelMove* move = nullptr;
538 move = new (allocator_) HParallelMove(allocator_);
539 move->SetLifetimePosition(user->GetLifetimePosition());
540 user->GetBlock()->InsertInstructionBefore(move, user);
542 move = previous->AsParallelMove();
544 DCHECK_EQ(move->GetLifetimePosition(), user->GetLifetimePosition());
545 AddMove(move, source, destination, nullptr, input->GetType());
564 HParallelMove* move;
570 // Move must happen before the first instruction of the block.
586 move = new (allocator_) HParallelMove(allocator_);
587 move->SetLifetimePosition(position);
588 at->GetBlock()->InsertInstructionBefore(move, at);
591 move = at->AsParallelMove();
595 // Move must happen after the instruction.
597 move = at->GetNext()->AsParallelMove();
598 // This is a parallel move for connecting siblings in a same block. We need to
600 if (move == nullptr || move->GetLifetimePosition() > position) {
601 move = new (allocator_) HParallelMove(allocator_);
602 move->SetLifetimePosition(position);
603 at->GetBlock()->InsertInstructionBefore(move, at->GetNext());
606 // Move must happen before the instruction.
611 // If the previous is a parallel move, then its position must be lower
613 // move instruction that precedes `instruction`.
617 move = new (allocator_) HParallelMove(allocator_);
618 move->SetLifetimePosition(position);
619 at->GetBlock()->InsertInstructionBefore(move, at);
621 move = previous->AsParallelMove();
624 DCHECK_EQ(move->GetLifetimePosition(), position);
625 AddMove(move, source, destination, instruction, instruction->GetType());
640 // a split interval between two blocks: the move has to happen in the successor.
643 HParallelMove* move;
644 // This is a parallel move for connecting blocks. We need to differentiate
649 move = new (allocator_) HParallelMove(allocator_);
650 move->SetLifetimePosition(position);
651 block->InsertInstructionBefore(move, last);
653 move = previous->AsParallelMove();
655 AddMove(move, source, destination, instruction, instruction->GetType());
666 HParallelMove* move = first->AsParallelMove();
668 // This is a parallel move for connecting blocks. We need to differentiate
670 if (move == nullptr || move->GetLifetimePosition() != position) {
671 move = new (allocator_) HParallelMove(allocator_);
672 move->SetLifetimePosition(position);
673 block->InsertInstructionBefore(move, first);
675 AddMove(move, source, destination, instruction, instruction->GetType());
690 HParallelMove* move = instruction->GetNext()->AsParallelMove();
691 // This is a parallel move for moving the output of an instruction. We need
694 if (move == nullptr || move->GetLifetimePosition() != position) {
695 move = new (allocator_) HParallelMove(allocator_);
696 move->SetLifetimePosition(position);
697 instruction->GetBlock()->InsertInstructionBefore(move, instruction->GetNext());
699 AddMove(move, source, destination, instruction, instruction->GetType());