From 20da49b2677fcf6a721b8a46e037a01e842fee61 Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Wed, 14 Sep 2011 17:06:35 -0700 Subject: [PATCH] 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 --- src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 -- 2.11.0