Lines Matching defs:moves

20 // moves between smaller sub-operands, e.g. a double move to two single moves.
24 ParallelMove* moves) {
51 // negative step so that register-to-slot moves are in the correct order.
66 // Add the remaining fragment moves.
70 moves->AddMove(AllocatedOperand(src_kind, smaller_rep, src_index),
88 void GapResolver::Resolve(ParallelMove* moves) {
92 // Remove redundant moves, collect source kinds and destination kinds to
93 // detect simple non-overlapping moves, and collect FP move representations if
96 size_t nmoves = moves->size();
98 MoveOperands* move = (*moves)[i];
101 if (i < nmoves) (*moves)[i] = (*moves)[nmoves];
113 if (nmoves != moves->size()) moves->resize(nmoves);
115 if ((source_kinds & destination_kinds).empty() || moves->size() < 2) {
116 // Fast path for non-conflicting parallel moves.
117 for (MoveOperands* move : *moves) {
125 // Start with the smallest FP moves, so we never encounter smaller moves
126 // in the middle of a cycle of larger moves.
129 for (size_t i = 0; i < moves->size(); ++i) {
130 auto move = (*moves)[i];
132 PerformMove(moves, move);
137 for (size_t i = 0; i < moves->size(); ++i) {
138 auto move = (*moves)[i];
140 PerformMove(moves, move);
147 for (size_t i = 0; i < moves->size(); ++i) {
148 auto move = (*moves)[i];
149 if (!move->IsEliminated()) PerformMove(moves, move);
153 void GapResolver::PerformMove(ParallelMove* moves, MoveOperands* move) {
169 // We may need to split moves between FP locations differently.
175 // destination blocks this one so recursively perform all such moves.
176 for (size_t i = 0; i < moves->size(); ++i) {
177 auto other = (*moves)[i];
186 // and the rest are appended to 'moves'.
187 other = Split(other, split_rep_, moves);
200 PerformMove(moves, other);
220 std::find_if(moves->begin(), moves->end(), [&](MoveOperands* move) {
224 if (blocker == moves->end()) {
238 // Update outstanding moves whose source may now have been moved.
240 // We may have to split larger moves.
241 for (size_t i = 0; i < moves->size(); ++i) {
242 auto other = (*moves)[i];
247 other = Split(other, split_rep_, moves);
254 other = Split(other, split_rep_, moves);
261 for (auto other : *moves) {