Skip to content

intel/compiler: fix nir_op_{i,u}*32 on ICL

Paulo Zanoni requested to merge pzanoni/mesa:icl-src1-restriction into master

On ICL we have the src1 restriction which is applied through fix_byte_src() and potentially changes the type of the operands from 8 to 32 bits. When this change happens, we fall into the "else if (bit_size < 32)" case and miscompute src_type because it takes into consideration bit_size (8) instead of the adjusted size of temp_op (32). This results in the shader reading unused memory, giving us mostly failures, but occasional passes due to whatever was already in the registers we were reading.

This commit fixes a lot of dEQP subgroup i8vec2 tests on ICL, such as:

dEQP-VK.subgroups.arithmetic.compute.subgroupadd_i8vec2

This can also be verified by simply changing fix_byte_src() to apply on all platforms.

Cc: @llandwerlin

Cc: @ibriano

Cc: @mattst88

Fixes: 5847de6e ("intel/compiler: don't use byte operands for src1 on ICL")

Signed-off-by: Paulo Zanoni

Note: applying this and also MR !2441 (merged) makes all the subgroup tests pass on ICL.

Merge request reports

Loading