spirv: Don’t check for NaN for most OpFOrd* comparisons
authorNeil Roberts <nroberts@igalia.com>
Tue, 24 Apr 2018 10:17:56 +0000 (12:17 +0200)
committerNeil Roberts <nroberts@igalia.com>
Thu, 26 Apr 2018 08:08:14 +0000 (10:08 +0200)
commitc4ab1bdcc9710e3c7cc7115d3be9c69b7e7712ef
tree103b26d7fdf4dda4643d7865aac71ddf42002fba
parent3ba5a646e58078f8d62d1d5f435a4939b98c8166
spirv: Don’t check for NaN for most OpFOrd* comparisons

For all of the OpFOrd* comparisons except OpFOrdNotEqual the hardware
should probably already return false if one of the operands is NaN so
we don’t need to have an explicit check for it. This seems to at least
work on Intel hardware. This should reduce the number of instructions
generated for the most common comparisons.

For what it’s worth, the original code to handle this was added in
e062eb6415de3a. The commit message for that says that it was to fix
some CTS tests for OpFUnord* opcodes. Even if the hardware doesn’t
handle NaNs this patch shouldn’t affect those tests. At any rate they
have since been moved out of the mustpass list. Incidentally those
tests fail on the nvidia proprietary driver so it doesn’t seem like
handling NaNs correctly is a priority.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/compiler/spirv/vtn_alu.c