From: Ian Romanick Date: Tue, 30 Nov 2021 17:45:49 +0000 (-0800) Subject: nir: All set-on-comparison opcodes can take all float types X-Git-Tag: upstream/22.3.5~12803 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38800b385c6b4752ec1a91db5b8a7de149d03d0c;p=platform%2Fupstream%2Fmesa.git nir: All set-on-comparison opcodes can take all float types Extend 4195a9450bde so that the next poor fool doesn't come along and say, "sge does the right thing for 16-bit sources, but slt gives a NIR validation failure. What the deuce?" NOTE: This commit is necessary to prevent regressions in GLSLstd450Step tests of 16-bit sources at "spriv: Produce correct result for GLSLstd450Step with NaN". Fixes: 4195a9450bd ("nir: sge operation is defined for floating-point types") Part-of: --- diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index c035c70..4df7311 100644 --- a/src/compiler/nir/nir_opcodes.py +++ b/src/compiler/nir/nir_opcodes.py @@ -844,10 +844,10 @@ binop_reduce("fany_nequal", 1, tfloat32, tfloat32, "{src0} != {src1}", # These comparisons for integer-less hardware return 1.0 and 0.0 for true # and false respectively -binop("slt", tfloat32, "", "(src0 < src1) ? 1.0f : 0.0f") # Set on Less Than +binop("slt", tfloat, "", "(src0 < src1) ? 1.0f : 0.0f") # Set on Less Than binop("sge", tfloat, "", "(src0 >= src1) ? 1.0f : 0.0f") # Set on Greater or Equal -binop("seq", tfloat32, _2src_commutative, "(src0 == src1) ? 1.0f : 0.0f") # Set on Equal -binop("sne", tfloat32, _2src_commutative, "(src0 != src1) ? 1.0f : 0.0f") # Set on Not Equal +binop("seq", tfloat, _2src_commutative, "(src0 == src1) ? 1.0f : 0.0f") # Set on Equal +binop("sne", tfloat, _2src_commutative, "(src0 != src1) ? 1.0f : 0.0f") # Set on Not Equal # SPIRV shifts are undefined for shift-operands >= bitsize, # but SM5 shifts are defined to use only the least significant bits.