Otherwise result_src may be provided to an integer instruction whose negate modifier has different semantics. Example is UCMP as in the bug linked below, where an unrelated change in the GLSL built-in lowering code for atan2 (e9ffd12827ac11a2d2002a42fa8eb1df847153ba) caused the generation of floating-point ir_unop_neg instructions followed by ir_triop_csel, which is lowered into UCMP on back-ends with native integer support.
Fixes a regression of piglit glsl-fs-tan-1 on softpipe introduced by the above-mentioned glsl front-end commit. Even though the commit that triggered the regression doesn't seem to have made it to any stable branches yet, this seems worth back-porting since I don't see any reason why the bug couldn't have been reproduced before that point. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99817 Tested-by: Vinson Lee <v...@freedesktop.org> Cc: mesa-sta...@lists.freedesktop.org --- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index af41bdb..6bf3c89 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -1633,7 +1633,7 @@ glsl_to_tgsi_visitor::visit_expression(ir_expression* ir, st_src_reg *op) emit_asm(ir, TGSI_OPCODE_DNEG, result_dst, op[0]); else { op[0].negate = ~op[0].negate; - result_src = op[0]; + emit_asm(ir, TGSI_OPCODE_MOV, result_dst, op[0]); } break; case ir_unop_subroutine_to_int: -- 2.10.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev