From: Paul Berry Date: Thu, 15 Sep 2011 00:06:35 +0000 (-0700) Subject: i965 new VS: Fix copy propagation of double negatives. X-Git-Tag: android-x86-4.4-r1~9903 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=20da49b2677fcf6a721b8a46e037a01e842fee61;p=android-x86%2Fexternal-mesa.git i965 new VS: Fix copy propagation of double negatives. When copy propagating a value into an instruction that negates its argument, we need to invert the sense of the value's "negate" flag, so that -(+x) becomes -x and -(-x) becomes +x. Previously, we were always setting the value's "negate" flag to true in this circumstance, so that both -(+x) and -(-x) turned into -x. Fixes Piglit test vs-double-negative.shader_test. Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp index c46735abfab..e0b2d2abf2b 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp @@ -196,7 +196,7 @@ try_copy_propagation(struct intel_context *intel, value.abs = true; } if (inst->src[arg].negate) - value.negate = true; + value.negate = !value.negate; /* FINISHME: We can't copy-propagate things that aren't normal * vec8s into gen6 math instructions, because of the weird src