On 09/04/2013 07:11 PM, Matt Turner wrote:
On Wed, Sep 4, 2013 at 3:22 PM, Kenneth Graunke <kenn...@whitecape.org> wrote:
Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
---
src/glsl/ir.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index e9317f8..4abadd8 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -250,6 +250,7 @@ ir_expression::ir_expression(int op, ir_rvalue *op0)
case ir_unop_cos_reduced:
case ir_unop_dFdx:
case ir_unop_dFdy:
+ case ir_unop_bitfield_reverse:
this->type = op0->type;
break;
@@ -257,6 +258,9 @@ ir_expression::ir_expression(int op, ir_rvalue *op0)
case ir_unop_b2i:
case ir_unop_u2i:
case ir_unop_bitcast_f2i:
+ case ir_unop_bit_count:
+ case ir_unop_find_msb:
+ case ir_unop_find_lsb:
this->type = glsl_type::get_instance(GLSL_TYPE_INT,
op0->type->vector_elements, 1);
break;
--
1.8.3.4
ir_binop_bfm, ir_triop_bfi, ir_triop_bitfield_extract, and
ir_quadop_bitfield_insert too?
Adding ir_binop_bfm makes sense.
The next patch adds triop support.
I didn't add an ir_expression constructor with type inference for
quadops since I wasn't sure how to handle ir_quadop_vector (and it's the
only other quadop). But I guess it can be handled as:
glsl_type::get_instance(operands[0]->type->base_type,
operands[0] != NULL +
operands[1] != NULL +
operands[2] != NULL +
operands[3] != NULL,
1);
Then ir_builder::bitfield_extract() could use it.
--Ken
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev