Lines Matching defs:first
29 * It's done by finding the first and last load with the same indirection
31 * load except for load sources, which are moved before the first load.
114 /* Grouping is done by moving everything else out of the first/last
178 group_loads(nir_instr *first, nir_instr *last)
180 /* Walk the instruction range between the first and last backward, and
185 instr != first;
188 if (!can_move(instr, first->pass_flags))
218 state.block = first->block;
219 state.first_index = first->index;
221 /* Walk the instruction range between the first and last forward, and move
222 * those that have no sources within the range before the first one.
225 first->node.next, node);
229 if (!can_move(instr, first->pass_flags))
237 /* Move the instruction before the first and update its index
240 nir_instr_move(nir_before_instr(first), move_instr);
241 move_instr->index = first->index - 1;
259 /* Start with 1 because we'll move instruction before the first one
284 handle_load_range(nir_instr **first, nir_instr **last,
287 if (*first && *last &&
288 (!current || current->index > (*first)->index + max_distance)) {
289 assert(*first != *last);
290 group_loads(*first, *last);
291 set_instr_indices((*first)->block);
292 *first = NULL;
415 /* Find the first and last instruction that use the same
465 /* max_distance is the maximum distance between the first and last instruction