intel/compiler: don't propagate cmp to add if add is saturated
From the Kaby Lake PRM Vol. 7 "Assigning Conditional Flags":
* Note that the [post condition signal] bits generated at the output of a compute are before the .sat.
post_zero does not mention saturation, but
testing it on actual GPUs shows that conditional modifiers
are applied after saturation.
* post_zero bit: This bit reflects whether the final result is zero after all the clamping, normalizing, or format conversion logic.
For signed types we don't care about saturation: it won't change the result of conditional modifier.
For floating and unsigned types there two special cases,
when we can remove
inst even if
scan_inst is saturated:
LE. Since conditional modifiers are just comparations
against zero, saturating positive values to the upper
limit never changes the result of comparation.
For negative values:
(sat(x) > 0) == (x > 0) --- false (sat(x) <= 0) == (x <= 0) --- true
Piglit tests: piglit!246 (merged)
Signed-off-by: Yevhenii Kolesnikov email@example.com