Skip to content

brw: Fix mov cmod propagation when there's int signedness mismatch

Sviatoslav Peleshko requested to merge GL/mesa:fix_deadlock_spots into main

If there's difference between scan_inst dest type and inst src type we should be more careful, because difference in signedness can cause incorrect results after the propagation.

For example, consider:

and(8)           dest:UD  src0:UD  src1:UD
mov.g(8)         null:F  -dest:D

If src0 and src1 are 0xffffffff, then dest:D will be interpreted as -1, and -dest:D will be 1, which is > 0.

If the cmod was propagated (and.l(8) dest:UD src0:UD src1:UD), dest:UD can never be < 0.

Fixes part of the misrenderings in #11800

cc @llandwerlin @idr

Merge request reports