Mesa (master): i965: Update expression splitting for the vector-result change to compares.
Eric Anholt
anholt at kemper.freedesktop.org
Wed Sep 22 21:59:11 UTC 2010
Module: Mesa
Branch: master
Commit: bb70bd55596fa19f5775bac98bffb567f3ba1d9f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb70bd55596fa19f5775bac98bffb567f3ba1d9f
Author: Eric Anholt <eric at anholt.net>
Date: Wed Sep 22 14:52:38 2010 -0700
i965: Update expression splitting for the vector-result change to compares.
Fixes:
glsl1-precision exp2
glsl1-precision log2
---
.../dri/i965/brw_fs_channel_expressions.cpp | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
index eba8a76..9fbf7b7 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
@@ -119,7 +119,6 @@ ir_channel_expressions_visitor::assign(ir_assignment *ir, int elem, ir_rvalue *v
{
ir_dereference *lhs = ir->lhs->clone(mem_ctx, NULL);
ir_assignment *assign;
- ir_swizzle *val_swiz;
/* This assign-of-expression should have been generated by the
* expression flattening visitor (since we never short circit to
@@ -232,6 +231,12 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
case ir_binop_bit_and:
case ir_binop_bit_xor:
case ir_binop_bit_or:
+ case ir_binop_less:
+ case ir_binop_greater:
+ case ir_binop_lequal:
+ case ir_binop_gequal:
+ case ir_binop_equal:
+ case ir_binop_nequal:
for (i = 0; i < vector_elements; i++) {
ir_rvalue *op0 = get_element(op_var[0], i);
ir_rvalue *op1 = get_element(op_var[1], i);
@@ -312,10 +317,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
break;
}
- case ir_binop_less:
- case ir_binop_greater:
- case ir_binop_lequal:
- case ir_binop_gequal:
case ir_binop_logic_and:
case ir_binop_logic_xor:
case ir_binop_logic_or:
@@ -323,8 +324,8 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
printf("\n");
assert(!"not reached: expression operates on scalars only");
break;
- case ir_binop_equal:
- case ir_binop_nequal: {
+ case ir_binop_all_equal:
+ case ir_binop_any_nequal: {
ir_expression *last = NULL;
for (i = 0; i < vector_elements; i++) {
ir_rvalue *op0 = get_element(op_var[0], i);
@@ -332,7 +333,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
ir_expression *temp;
ir_expression_operation join;
- if (expr->operation == ir_binop_equal)
+ if (expr->operation == ir_binop_all_equal)
join = ir_binop_logic_and;
else
join = ir_binop_logic_or;
More information about the mesa-commit
mailing list