On Mon, Jul 11, 2016 at 1:28 PM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > This bug is uncovered by glsl/lower_if_to_cond_assign. > I don't know if it can be reproduced in any other way. > > Cc: <mesa-sta...@lists.freedesktop.org> > --- > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > index 76656f5..0b7feb7 100644 > --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > @@ -1958,12 +1958,14 @@ glsl_to_tgsi_visitor::visit_expression(ir_expression* > ir, st_src_reg *op) > emit_asm(ir, TGSI_OPCODE_TRUNC, result_dst, op[0]); > break; > case ir_unop_bitcast_f2i: > - result_src = op[0]; > - result_src.type = GLSL_TYPE_INT; > - break; > case ir_unop_bitcast_f2u: > - result_src = op[0]; > - result_src.type = GLSL_TYPE_UINT; > + /* Make sure we don't propagate the negate modifier to integer > opcodes. */ > + if (op[0].negate)
Or abs or saturate, presumably? > + emit_asm(ir, TGSI_OPCODE_MOV, result_dst, op[0]); > + else > + result_src = op[0]; > + result_src.type = ir->operation == ir_unop_bitcast_f2i ? GLSL_TYPE_INT > : > + > GLSL_TYPE_UINT; > break; > case ir_unop_bitcast_i2f: > case ir_unop_bitcast_u2f: > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev