From: Kenneth Graunke Date: Tue, 3 Sep 2013 23:37:39 +0000 (-0700) Subject: glsl: Add IR builder support for triops. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eff2ca1ac3f77da81a698b08c46f245b28930ede;p=mesa.git glsl: Add IR builder support for triops. Now that we have the ir_expression constructor that does type inference, this is trivial to do. Signed-off-by: Kenneth Graunke Reviewed-by: Matt Turner Reviewed-by: Paul Berry --- diff --git a/src/glsl/ir_builder.cpp b/src/glsl/ir_builder.cpp index 7d9cf5e4725..87f57901bec 100644 --- a/src/glsl/ir_builder.cpp +++ b/src/glsl/ir_builder.cpp @@ -173,6 +173,14 @@ expr(ir_expression_operation op, operand a, operand b) return new(mem_ctx) ir_expression(op, a.val, b.val); } +ir_expression * +expr(ir_expression_operation op, operand a, operand b, operand c) +{ + void *mem_ctx = ralloc_parent(a.val); + + return new(mem_ctx) ir_expression(op, a.val, b.val, c.val); +} + ir_expression *add(operand a, operand b) { return expr(ir_binop_add, a, b); diff --git a/src/glsl/ir_builder.h b/src/glsl/ir_builder.h index 7049476a1cf..6c0b5a189bd 100644 --- a/src/glsl/ir_builder.h +++ b/src/glsl/ir_builder.h @@ -125,6 +125,7 @@ ir_assignment *assign(deref lhs, operand rhs, int writemask); ir_expression *expr(ir_expression_operation op, operand a); ir_expression *expr(ir_expression_operation op, operand a, operand b); +ir_expression *expr(ir_expression_operation op, operand a, operand b, operand c); ir_expression *add(operand a, operand b); ir_expression *sub(operand a, operand b); ir_expression *mul(operand a, operand b);