This reverts commit c4ab1bdcc9710e3c7cc7115d3be9c69b7e7712ef. We need to check the arguments looking for NaNs, because they can introduce failures in tests for FOrd*, specially when running VK_KHR_shader_float_control tests in CTS.
Signed-off-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com> --- src/compiler/spirv/vtn_alu.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/compiler/spirv/vtn_alu.c b/src/compiler/spirv/vtn_alu.c index dc6fedc9129..629b57560ca 100644 --- a/src/compiler/spirv/vtn_alu.c +++ b/src/compiler/spirv/vtn_alu.c @@ -535,18 +535,23 @@ vtn_handle_alu(struct vtn_builder *b, SpvOp opcode, break; } - case SpvOpFOrdNotEqual: { - /* For all the SpvOpFOrd* comparisons apart from NotEqual, the value - * from the ALU will probably already be false if the operands are not - * ordered so we don’t need to handle it specially. - */ + case SpvOpFOrdEqual: + case SpvOpFOrdNotEqual: + case SpvOpFOrdLessThan: + case SpvOpFOrdGreaterThan: + case SpvOpFOrdLessThanEqual: + case SpvOpFOrdGreaterThanEqual: { bool swap; unsigned src_bit_size = glsl_get_bit_size(vtn_src[0]->type); unsigned dst_bit_size = glsl_get_bit_size(type); nir_op op = vtn_nir_alu_op_for_spirv_opcode(b, opcode, &swap, src_bit_size, dst_bit_size); - assert(!swap); + if (swap) { + nir_ssa_def *tmp = src[0]; + src[0] = src[1]; + src[1] = tmp; + } val->ssa->def = nir_iand(&b->nb, -- 2.19.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev