Lines Matching defs:instr

95    nir_instr *instr = def->parent_instr;
99 return instr->block->index <= block_before_loop->index;
109 instr_is_invariant(nir_instr *instr, nir_loop *loop);
131 phi_is_invariant(nir_phi_instr *instr, nir_loop *loop)
138 if (instr->instr.block == nir_loop_first_block(loop))
141 nir_foreach_phi_src(src, instr) {
147 nir_cf_node *prev = nir_cf_node_prev(&instr->instr.block->cf_node);
167 instr_is_invariant(nir_instr *instr, nir_loop *loop)
169 assert(instr->pass_flags == undefined);
171 switch (instr->type) {
178 return phi_is_invariant(nir_instr_as_phi(instr), loop);
180 nir_intrinsic_instr *intrinsic = nir_instr_as_intrinsic(instr);
186 return nir_foreach_src(instr, src_is_invariant, loop) ? invariant : not_invariant;
229 nir_ssa_dest_init(&phi->instr, &phi->dest,
240 nir_instr_insert_before_block(state->block_after_loop, &phi->instr);
248 nir_deref_instr *instr = nir_instr_as_deref(def->parent_instr);
249 cast->modes = instr->modes;
250 cast->type = instr->type;
252 cast->cast.ptr_stride = nir_deref_instr_array_stride(instr);
254 nir_ssa_dest_init(&cast->instr, &cast->dest,
257 nir_instr_insert(nir_after_phis(state->block_after_loop), &cast->instr);
313 nir_foreach_instr(instr, block)
314 instr->pass_flags = undefined;
336 nir_foreach_instr(instr, block) {
337 if (instr->pass_flags == undefined)
338 instr->pass_flags = instr_is_invariant(instr, nir_cf_node_as_loop(cf_node));
344 nir_foreach_instr(instr, block) {
345 nir_foreach_ssa_def(instr, convert_loop_exit_for_ssa, state);
348 if (state->skip_invariants && instr->pass_flags == invariant)
349 instr->pass_flags = undefined;
356 nir_foreach_instr(instr, state->block_after_loop) {
357 if (instr->type == nir_instr_type_phi)
358 instr->pass_flags = not_invariant;
384 nir_foreach_instr(instr, block)
385 nir_foreach_ssa_def(instr, convert_loop_exit_for_ssa, state);