Lines Matching refs:ir

36 #include "ir.h"
48 assignment_entry(ir_variable *lhs, ir_assignment *ir)
51 assert(ir);
53 this->ir = ir;
54 this->available = ir->write_mask;
58 ir_assignment *ir;
93 virtual ir_visitor_status visit(ir_dereference_variable *ir)
95 kill_channels(ir->var, ~0);
100 virtual ir_visitor_status visit(ir_swizzle *ir)
102 ir_dereference_variable *deref = ir->val->as_dereference_variable();
107 used |= 1 << ir->mask.x;
108 used |= 1 << ir->mask.y;
109 used |= 1 << ir->mask.z;
110 used |= 1 << ir->mask.w;
128 virtual ir_visitor_status visit_enter(class ir_dereference_array *ir)
130 ir->array_index->accept(visitor);
134 static void run(ir_instruction *ir, ir_hierarchical_visitor *v)
137 ir->accept(& top_visit);
150 process_assignment(void *ctx, ir_assignment *ir, exec_list *assignments)
157 ir->rhs->accept(&v);
158 if (ir->condition) {
159 ir->condition->accept(&v);
164 array_index_visit::run(ir->lhs, &v);
165 var = ir->lhs->variable_referenced();
169 if (!ir->condition) {
170 ir_dereference_variable *deref_var = ir->lhs->as_dereference_variable();
180 ir->write_mask);
188 int remove = entry->available & ir->write_mask;
192 entry->ir->write_mask,
193 remove, entry->ir->write_mask & ~remove);
200 entry->ir->print();
204 entry->ir->write_mask &= ~remove;
206 if (entry->ir->write_mask == 0) {
208 entry->ir->remove();
211 void *mem_ctx = ralloc_parent(entry->ir);
220 if ((entry->ir->write_mask | remove) & (1 << i)) {
227 entry->ir->rhs = new(mem_ctx) ir_swizzle(entry->ir->rhs,
232 entry->ir->print();
238 } else if (ir->whole_variable_written() != NULL) {
250 entry->ir->remove();
259 assignment_entry *entry = new(ctx) assignment_entry(var, ir);
281 ir_instruction *ir, *ir_next;
289 for (ir = first, ir_next = (ir_instruction *)first->next;;
290 ir = ir_next, ir_next = (ir_instruction *)ir->next) {
291 ir_assignment *ir_assign = ir->as_assignment();
294 ir->print();
302 ir->accept(&kill);
305 if (ir == last)