glsl: Fix type-deduction for and/or/xor expressions

In ir_expression's constructor, the cases for {bit,logic}_{and,or,xor}
failed to handle the case when both operands were vectors.

Note: This is a candidate for the stable branches.
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
Chad Versace 2013-01-15 12:16:12 -08:00
parent ccf87f2199
commit 9d7931ddf0
1 changed files with 5 additions and 0 deletions

View File

@ -378,10 +378,15 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1)
case ir_binop_bit_and:
case ir_binop_bit_xor:
case ir_binop_bit_or:
assert(!op0->type->is_matrix());
assert(!op1->type->is_matrix());
if (op0->type->is_scalar()) {
this->type = op1->type;
} else if (op1->type->is_scalar()) {
this->type = op0->type;
} else {
assert(op0->type->vector_elements == op1->type->vector_elements);
this->type = op0->type;
}
break;