Lines Matching refs:ir

39 #include "ir.h"
68 ir_vec_index_to_cond_assign_visitor::convert_vec_index_to_cond_assign(ir_rvalue *ir)
70 ir_dereference_array *orig_deref = ir->as_dereference_array();
79 return ir;
83 return ir;
85 void *mem_ctx = hieralloc_parent(ir);
99 var = new(base_ir) ir_variable(ir->type, "vec_index_tmp_v",
127 ir_vec_index_to_cond_assign_visitor::visit_enter(ir_expression *ir)
131 for (i = 0; i < ir->get_num_operands(); i++) {
132 ir->operands[i] = convert_vec_index_to_cond_assign(ir->operands[i]);
139 ir_vec_index_to_cond_assign_visitor::visit_enter(ir_swizzle *ir)
145 ir->val = convert_vec_index_to_cond_assign(ir->val);
151 ir_vec_index_to_cond_assign_visitor::visit_leave(ir_assignment *ir)
158 ir->rhs = convert_vec_index_to_cond_assign(ir->rhs);
159 if (ir->condition)
160 ir->condition = convert_vec_index_to_cond_assign(ir->condition);
163 ir_dereference_array *orig_deref = ir->lhs->as_dereference_array();
170 void *mem_ctx = hieralloc_parent(ir);
175 index = new(ir) ir_variable(glsl_type::int_type, "vec_index_tmp_i",
177 ir->insert_before(index);
178 deref = new(ir) ir_dereference_variable(index);
179 assign = new(ir) ir_assignment(deref, orig_deref->array_index, NULL);
180 ir->insert_before(assign);
183 var = new(ir) ir_variable(ir->rhs->type, "vec_index_tmp_v",
185 ir->insert_before(var);
186 deref = new(ir) ir_dereference_variable(var);
187 assign = new(ir) ir_assignment(deref, ir->rhs, NULL);
188 ir->insert_before(assign);
194 deref = new(ir) ir_dereference_variable(index);
195 condition = new(ir) ir_expression(ir_binop_equal,
198 new(ir) ir_constant(i));
203 swizzle = new(ir) ir_swizzle(orig_deref->array->clone(mem_ctx, NULL),
206 deref = new(ir) ir_dereference_variable(var);
207 assign = new(ir) ir_assignment(swizzle, deref, condition);
208 ir->insert_before(assign);
210 ir->remove();
218 ir_vec_index_to_cond_assign_visitor::visit_enter(ir_call *ir)
220 foreach_iter(exec_list_iterator, iter, *ir) {
233 ir_vec_index_to_cond_assign_visitor::visit_enter(ir_return *ir)
235 if (ir->value) {
236 ir->value = convert_vec_index_to_cond_assign(ir->value);
243 ir_vec_index_to_cond_assign_visitor::visit_enter(ir_if *ir)
245 ir->condition = convert_vec_index_to_cond_assign(ir->condition);