Lines Matching defs:instr
84 get_instr_cost(nir_instr *instr, const nir_opt_preamble_options *options)
89 if (instr->type == nir_instr_type_load_const ||
90 instr->type == nir_instr_type_ssa_undef)
93 return options->instr_cost_cb(instr, options->cb_data);
106 can_move_srcs(nir_instr *instr, opt_preamble_ctx *ctx)
108 return nir_foreach_src(instr, can_move_src, ctx);
112 can_move_intrinsic(nir_intrinsic_instr *instr, opt_preamble_ctx *ctx)
114 switch (instr->intrinsic) {
194 return can_move_srcs(&instr->instr, ctx);
203 return (nir_intrinsic_access(instr) & ACCESS_CAN_REORDER) &&
204 can_move_srcs(&instr->instr, ctx);
212 can_move_instr(nir_instr *instr, opt_preamble_ctx *ctx)
214 switch (instr->type) {
216 nir_tex_instr *tex = nir_instr_as_tex(instr);
224 return can_move_srcs(instr, ctx);
231 nir_alu_instr *alu = nir_instr_as_alu(instr);
241 return can_move_srcs(instr, ctx);
245 return can_move_intrinsic(nir_instr_as_intrinsic(instr), ctx);
252 nir_deref_instr *deref = nir_instr_as_deref(instr);
262 return can_move_srcs(instr, ctx);
284 avoid_instr(nir_instr *instr, const nir_opt_preamble_options *options)
286 if (instr->type == nir_instr_type_deref)
289 return options->avoid_instr_cb(instr, options->cb_data);
350 nir_foreach_instr (instr, block) {
351 nir_ssa_def *def = nir_instr_ssa_def(instr);
357 state->can_move = can_move_instr(instr, &ctx);
376 nir_foreach_instr_reverse (instr, block) {
377 nir_ssa_def *def = nir_instr_ssa_def(instr);
385 state->value = get_instr_cost(instr, options);
386 bool is_candidate = !avoid_instr(instr, options);
437 nir_foreach_instr (instr, block) {
438 nir_ssa_def *def = nir_instr_ssa_def(instr);
447 nir_foreach_src(instr, update_src_value, &ctx);
526 nir_foreach_instr (instr, block) {
527 nir_ssa_def *def = nir_instr_ssa_def(instr);
536 instr, remap_table);
569 nir_foreach_instr_safe (instr, block) {
570 nir_ssa_def *def = nir_instr_ssa_def(instr);
578 b->cursor = nir_before_instr(instr);
586 nir_instr_free_and_dce(instr);