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->fprint(stderr);
178 ir_tree_grafting_visitor::visit_leave(ir_assignment *ir)
180 if (do_graft(&ir->rhs))
186 return check_graft(ir, ir->lhs->variable_referenced());
190 ir_tree_grafting_visitor::visit_enter(ir_function *ir)
192 (void) ir;
197 ir_tree_grafting_visitor::visit_enter(ir_function_signature *ir)
199 (void)ir;
204 ir_tree_grafting_visitor::visit_enter(ir_call *ir)
206 foreach_two_lists(formal_node, &ir->callee->parameters,
207 actual_node, &ir->actual_parameters) {
209 ir_rvalue *ir = (ir_rvalue *) actual_node;
210 ir_rvalue *new_ir = ir;
214 if (check_graft(ir, sig_param) == visit_stop)
220 ir->replace_with(new_ir);
225 if (ir->return_deref && check_graft(ir, ir->return_deref->var) == visit_stop)
232 ir_tree_grafting_visitor::visit_enter(ir_expression *ir)
234 for (unsigned int i = 0; i < ir->num_operands; i++) {
235 if (do_graft(&ir->operands[i]))
243 ir_tree_grafting_visitor::visit_enter(ir_if *ir)
245 if (do_graft(&ir->condition))
255 ir_tree_grafting_visitor::visit_enter(ir_swizzle *ir)
257 if (do_graft(&ir->val))
264 ir_tree_grafting_visitor::visit_enter(ir_texture *ir)
266 if (do_graft(&ir->coordinate) ||
267 do_graft(&ir->projector) ||
268 do_graft(&ir->offset) ||
269 do_graft(&ir->shadow_comparator) ||
270 do_graft(&ir->clamp))
273 switch (ir->op) {
281 if (do_graft(&ir->lod_info.bias))
287 if (do_graft(&ir->lod_info.lod))
291 if (do_graft(&ir->lod_info.sample_index))
295 if (do_graft(&ir->lod_info.grad.dPdx) ||
296 do_graft(&ir->lod_info.grad.dPdy))
300 if (do_graft(&ir->lod_info.component))
326 for (ir_instruction *ir = (ir_instruction *)start->next;
327 ir != bb_last->next;
328 ir = (ir_instruction *)ir->next) {
332 ir->fprint(stderr);
336 ir_visitor_status s = ir->accept(&v);
350 ir_instruction *ir, *next;
352 for (ir = bb_first, next = (ir_instruction *)ir->next;
353 ir != bb_last->next;
354 ir = next, next = (ir_instruction *)ir->next) {
355 ir_assignment *assign = ir->as_assignment();