From: Marek Olšák Date: Tue, 31 Aug 2010 03:38:50 +0000 (+0200) Subject: ir_to_mesa: use RSQ+MUL instead of RSQ+RCP for SQRT X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4f189b3bf57a6500953dac49105f160af5fa6468;p=mesa.git ir_to_mesa: use RSQ+MUL instead of RSQ+RCP for SQRT sqrt(x) = 1/rsq(x) = x*rsq(x) This optimization already was in the old GLSL compiler. Acked on irc by Eric Anholt. --- diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index af6d7345a54..516c991855d 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -880,8 +880,9 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_unop_sqrt: + /* sqrt(x) = x * rsq(x). */ ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, result_src); + ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]); /* For incoming channels < 0, set the result to 0. */ ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst, op[0], src_reg_for_float(0.0), result_src);