From: Ilia Mirkin Date: Sun, 3 Aug 2014 05:27:32 +0000 (-0400) Subject: mesa/st: only convert AND(a, NOT(b)) into MAD when not using native integers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7b3d0a9a1eb11bf70390ad116ed662a47f06183e;p=mesa.git mesa/st: only convert AND(a, NOT(b)) into MAD when not using native integers Native integers imply a somewhat different handling of booleans. Instead of being 1.0/0.0 floats, they are 0 (true) / -1 (false) integers. As such the original optimization no longer applies. Reported-by: Glenn Kennard Signed-off-by: Ilia Mirkin Reviewed-by: Marek Olšák Cc: "10.2" --- diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 27e4615f997..b818139baf7 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -1354,7 +1354,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir) /* Quick peephole: Emit OPCODE_MAD(-a, -b, a) instead of AND(a, NOT(b)) */ - if (ir->operation == ir_binop_logic_and) { + if (!native_integers && ir->operation == ir_binop_logic_and) { if (try_emit_mad_for_and_not(ir, 1)) return; if (try_emit_mad_for_and_not(ir, 0))