Lines Matching refs:ir

50 #include "ir.h"
81 ir_visitor_status check_graft(ir_instruction *ir, ir_variable *var);
96 dereferences_variable_callback(ir_instruction *ir, void *data)
99 ir_dereference_variable *deref = ir->as_dereference_variable();
106 dereferences_variable(ir_instruction *ir, ir_variable *var)
113 visit_tree(ir, dereferences_variable_callback, &info);
146 ir_tree_grafting_visitor::visit_enter(ir_loop *ir)
148 (void)ir;
159 * \param ir An instruction that writes to a variable.
163 ir_tree_grafting_visitor::check_graft(ir_instruction *ir, ir_variable *var)
168 ir->print();
178 ir_tree_grafting_visitor::visit_leave(ir_assignment *ir)
180 if (do_graft(&ir->rhs) ||
181 do_graft(&ir->condition))
187 return check_graft(ir, ir->lhs->variable_referenced());
191 ir_tree_grafting_visitor::visit_enter(ir_function *ir)
193 (void) ir;
198 ir_tree_grafting_visitor::visit_enter(ir_function_signature *ir)
200 (void)ir;
205 ir_tree_grafting_visitor::visit_enter(ir_call *ir)
207 exec_list_iterator sig_iter = ir->callee->parameters.iterator();
209 foreach_iter(exec_list_iterator, iter, *ir) {
211 ir_rvalue *ir = (ir_rvalue *)iter.get();
212 ir_rvalue *new_ir = ir;
215 if (check_graft(ir, sig_param) == visit_stop)
221 ir->replace_with(new_ir);
227 if (ir->return_deref && check_graft(ir, ir->return_deref->var) == visit_stop)
234 ir_tree_grafting_visitor::visit_enter(ir_expression *ir)
236 for (unsigned int i = 0; i < ir->get_num_operands(); i++) {
237 if (do_graft(&ir->operands[i]))
245 ir_tree_grafting_visitor::visit_enter(ir_if *ir)
247 if (do_graft(&ir->condition))
257 ir_tree_grafting_visitor::visit_enter(ir_swizzle *ir)
259 if (do_graft(&ir->val))
266 ir_tree_grafting_visitor::visit_enter(ir_texture *ir)
268 if (do_graft(&ir->coordinate) ||
269 do_graft(&ir->projector) ||
270 do_graft(&ir->offset) ||
271 do_graft(&ir->shadow_comparitor))
274 switch (ir->op) {
278 if (do_graft(&ir->lod_info.bias))
284 if (do_graft(&ir->lod_info.lod))
288 if (do_graft(&ir->lod_info.grad.dPdx) ||
289 do_graft(&ir->lod_info.grad.dPdy))
315 for (ir_instruction *ir = (ir_instruction *)start->next;
316 ir != bb_last->next;
317 ir = (ir_instruction *)ir->next) {
321 ir->print();
325 ir_visitor_status s = ir->accept(&v);
339 ir_instruction *ir, *next;
341 for (ir = bb_first, next = (ir_instruction *)ir->next;
342 ir != bb_last->next;
343 ir = next, next = (ir_instruction *)ir->next) {
344 ir_assignment *assign = ir->as_assignment();