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 <kenneth@whitecape.org>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user