Lines Matching refs:ir

31 #include "ir.h"
55 ir_rvalue *handle_expression(ir_expression *ir);
76 is_vec_zero(ir_constant *ir)
78 return (ir == NULL) ? false : ir->is_zero();
82 is_vec_one(ir_constant *ir)
84 return (ir == NULL) ? false : ir->is_one();
88 is_vec_basis(ir_constant *ir)
90 return (ir == NULL) ? false : ir->is_basis();
94 update_type(ir_expression *ir)
96 if (ir->operands[0]->type->is_vector())
97 ir->type = ir->operands[0]->type;
99 ir->type = ir->operands[1]->type;
187 ir_algebraic_visitor::handle_expression(ir_expression *ir)
194 assert(ir->get_num_operands() <= 2);
195 for (i = 0; i < ir->get_num_operands(); i++) {
196 if (ir->operands[i]->type->is_matrix())
197 return ir;
199 op_const[i] = ir->operands[i]->constant_expression_value();
200 op_expr[i] = ir->operands[i]->as_expression();
204 this->mem_ctx = ralloc_parent(ir);
206 switch (ir->operation) {
232 ir->type,
243 return swizzle_if_required(ir, ir->operands[1]);
247 return swizzle_if_required(ir, ir->operands[0]);
254 reassociate_constant(ir, 0, op_const[0],
255 ir->operands[1]->as_expression());
257 reassociate_constant(ir, 1, op_const[1],
258 ir->operands[0]->as_expression());
265 ir->operands[1]->type,
266 ir->operands[1],
268 return swizzle_if_required(ir, temp);
272 return swizzle_if_required(ir, ir->operands[0]);
279 return swizzle_if_required(ir, ir->operands[1]);
283 return swizzle_if_required(ir, ir->operands[0]);
288 return ir_constant::zero(ir, ir->type);
295 reassociate_constant(ir, 0, op_const[0],
296 ir->operands[1]->as_expression());
298 reassociate_constant(ir, 1, op_const[1],
299 ir->operands[0]->as_expression());
304 if (is_vec_one(op_const[0]) && ir->type->base_type == GLSL_TYPE_FLOAT) {
307 ir->operands[1]->type,
308 ir->operands[1],
310 return swizzle_if_required(ir, temp);
314 return swizzle_if_required(ir, ir->operands[0]);
321 return ir_constant::zero(mem_ctx, ir->type);
330 return new(mem_ctx) ir_swizzle(ir->operands[1], component, 0, 0, 0, 1);
339 return new(mem_ctx) ir_swizzle(ir->operands[0], component, 0, 0, 0, 1);
347 return ir->operands[1];
350 return ir->operands[0];
353 return ir_constant::zero(mem_ctx, ir->type);
361 return ir->operands[1];
364 return ir->operands[0];
367 return new(mem_ctx) ir_expression(ir_unop_logic_not, ir->type,
368 ir->operands[1], NULL);
371 return new(mem_ctx) ir_expression(ir_unop_logic_not, ir->type,
372 ir->operands[0], NULL);
380 return ir->operands[1];
383 return ir->operands[0];
391 return new(mem_ctx) ir_constant(ir->type, &data);
413 return swizzle_if_required(ir, temp);
422 return ir;