Skip to content

intel_shader_integer_functions2: Add tests for Intel compiler bug

These test cases exposes a bug in constant propagation in the compiler backend for the Intel Mesa drivers. The multiply32x16 instructions used here will initially create a sequence like

    mov(8)          g8<1>D          0x7fffffffD
    mul(8)          g16<1>D         g8<8,8,1>D      g15<16,8,2>W

The constant propagation in the compiler backend will transform that to

    mul(8)          g16<1>D         g15<16,8,2>W    0x7fffffffD

On some Intel GPUs that will lead to a violation of hardware restrictions:

When multiplying a DW and any lower precision integer, the DW operand must on src0.

On other Intel GPUs a correct result is produced, but an inefficient instruction sequence (i.e., the exact sequence the multiply32x16 function is trying to avoid) is used.

Merge request reports