From: Eric Anholt Date: Fri, 7 May 2010 19:20:58 +0000 (-0700) Subject: ir_to_mesa: Add logic_or and logic_and to get CorrectFunction1.vert working. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4380099c98119611ceee684669d00be26195c7d7;p=mesa.git ir_to_mesa: Add logic_or and logic_and to get CorrectFunction1.vert working. --- diff --git a/ir_to_mesa.cpp b/ir_to_mesa.cpp index 3ae848a21bc..f45421057b2 100644 --- a/ir_to_mesa.cpp +++ b/ir_to_mesa.cpp @@ -415,6 +415,19 @@ ir_to_mesa_visitor::visit(ir_expression *ir) this->result = this->create_tree(MB_TERM_sne_vec4_vec4, ir, op[0], op[1]); break; + case ir_binop_logic_or: + /* This could be a saturated add. */ + this->result = this->create_tree(MB_TERM_add_vec4_vec4, ir, op[0], op[1]); + this->result = this->create_tree(MB_TERM_sne_vec4_vec4, ir, + this->create_tree_for_float(ir, 0.0), + this->result); + break; + + case ir_binop_logic_and: + /* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */ + this->result = this->create_tree(MB_TERM_mul_vec4_vec4, ir, op[0], op[1]); + break; + case ir_binop_dot: if (ir->operands[0]->type == vec4_type) { assert(ir->operands[1]->type == vec4_type);