vkd3d test failures related to ordered/unordered comparisons in test_shader_instructions()
Submitted by Józef Kucia
Assigned to mes..@..op.org
Link to original bug (#109249)
Description
Radv and Anv are affected. Nir optimizations appear to flip ordered/unordered comparisons. Removing ~inot optimization from https://gitlab.freedesktop.org/mesa/mesa/blob/add5a2ec92f4b3f7ac8353e5986dc04186a7b6da/src/compiler/nir/nir_opt_algebraic.py#L160 fixes the vkd3d test failures.
See https://lists.freedesktop.org/archives/mesa-dev/2018-December/210780.html for a related discussion.
The problem produces the following test failures on Anv:
d3d12:8258:31:if_return: Test failed: Got {0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00} at (0, 0). d3d12:8258:41:if_return: Test failed: Got {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00} at (0, 0). d3d12:8258:48:if_return: Test failed: Got {0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00} at (0, 0).
and the following test failures on Radv:
d3d12:8258:31:if_return: Test failed: Got {0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00} at (0, 0). d3d12:8258:34:if_return: Test failed: Got {1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00} at (0, 0). d3d12:8258:37:if_return: Test failed: Got {1.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00} at (0, 0). d3d12:8258:41:if_return: Test failed: Got {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00} at (0, 0). d3d12:8258:48:if_return: Test failed: Got {0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00}, expected {1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00} at (0, 0).
Version: git