intel/fs/gen12: Fix workaround for VxH indirect addressing under control flow.

The current workaround for this hardware bug involved marking the ADD instruction used to initialize the address register as NoMask in order to make sure that the whole address register has well-defined contents, since TGL hardware seems to fetch the GRF registers for all channels when doing VxH indirect addressing, whether or not they are enabled in the execution mask. This would lead to hangs whenever MOV_INDIRECT was used under non-uniform control flow.

However the current workaround didn't achieve that purpose, since the result of the NoMask ADD instruction for a dead channel was based on the corresponding (dead) component of the indirect_byte_offset source, which would still be undefined in the likely case that the source was initialized under control flow itself.

Fixes hangs on TGL with GFXBench5/gl_4 (AKA Car Chase) in a tessellation shader.

Merge request reports