Home | History | Annotate | Download | only in glsl

Lines Matching defs:ir

37 #include "ir.h"
49 ir_visitor_status move_outer_block_inside(ir_instruction *ir,
51 void move_returns_after_block(ir_instruction *ir,
75 truncate_after_instruction(ir_instruction *ir)
77 if (!ir)
80 while (!ir->get_next()->is_tail_sentinel())
81 ((ir_instruction *)ir->get_next())->remove();
91 ir_instruction *ir = (ir_instruction *)iter.get();
92 if (ir->ir_type == ir_type_return)
93 return (ir_return *)ir;
100 ir_if_return_visitor::move_returns_after_block(ir_instruction *ir,
108 ir->insert_after(new(ir) ir_return(NULL));
111 ir_variable *new_var = new(ir) ir_variable(then_return->value->type,
114 ir->insert_before(new_var);
116 assign = new(ir) ir_assignment(new(ir) ir_dereference_variable(new_var),
120 assign = new(ir) ir_assignment(new(ir) ir_dereference_variable(new_var),
124 ir_dereference_variable *deref = new(ir) ir_dereference_variable(new_var);
125 ir->insert_after(new(ir) ir_return(deref));
131 ir_if_return_visitor::move_outer_block_inside(ir_instruction *ir,
134 if (!ir->get_next()->is_tail_sentinel()) {
135 while (!ir->get_next()->is_tail_sentinel()) {
136 ir_instruction *move_ir = (ir_instruction *)ir->get_next();
142 /* If we move the instructions following ir inside the block, it
159 ir_if_return_visitor::visit_enter(ir_function_signature *ir)
163 if (!ir->is_defined)
165 if (strcmp(ir->function_name(), "main") == 0)
168 ret = find_return_in_block(&ir->body);
173 if (ir->return_type->is_void()) {
174 ir->body.push_tail(new(ir) ir_return(NULL));
195 ir_variable *undef = new(ir) ir_variable(ir->return_type,
198 ir->body.push_tail(undef);
200 ir_dereference_variable *deref = new(ir) ir_dereference_variable(undef);
201 ir->body.push_tail(new(ir) ir_return(deref));
209 ir_if_return_visitor::visit_leave(ir_if *ir)
214 then_return = find_return_in_block(&ir->then_instructions);
215 else_return = find_return_in_block(&ir->else_instructions);
229 move_returns_after_block(ir, then_return, else_return);
241 return move_outer_block_inside(ir, &ir->else_instructions);
244 return move_outer_block_inside(ir, &ir->then_instructions);