mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
glsl_to_tgsi: don't use the negate modifier in integer ops after bitcast
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-stable@lists.freedesktop.org>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
(cherry picked from commit ead7736821)
This commit is contained in:
parent
a2aec66444
commit
cbdbf67f1c
1 changed files with 7 additions and 5 deletions
|
|
@ -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)
|
||||
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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue