From c9039fdb167865547dc9b3828d69b99209344999 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 2 Sep 2010 07:58:28 -0600 Subject: [PATCH] mesa: fix code generation for ir_unop_sqrt The CMP instruction needed to be flipped to properly handle operand==0. Fixes fd.o bug 29923. --- src/mesa/program/ir_to_mesa.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index b2ba9a2fbcc..f0e14b8ece3 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -1198,9 +1198,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir) /* sqrt(x) = x * rsq(x). */ ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]); - /* For incoming channels < 0, set the result to 0. */ + /* For incoming channels <= 0, set the result to 0. */ + op[0].negate = ~op[0].negate; ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst, - op[0], src_reg_for_float(0.0), result_src); + op[0], result_src, src_reg_for_float(0.0)); break; case ir_unop_rsq: ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); -- 2.30.2