[Mesa-dev] [RFC 4/5] spirv: make use of unordered float comparison opcodes

Timothy Arceri tarceri at itsqueeze.com
Wed Feb 14 06:29:20 UTC 2018


---
 src/compiler/spirv/vtn_alu.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/compiler/spirv/vtn_alu.c b/src/compiler/spirv/vtn_alu.c
index d0c9e31693..fd36c6537b 100644
--- a/src/compiler/spirv/vtn_alu.c
+++ b/src/compiler/spirv/vtn_alu.c
@@ -326,26 +326,26 @@ vtn_nir_alu_op_for_spirv_opcode(struct vtn_builder *b,
     * ordered.
     */
    case SpvOpFOrdEqual:                            return nir_op_feq;
-   case SpvOpFUnordEqual:                          return nir_op_feq;
+   case SpvOpFUnordEqual:                          return nir_op_ufeq;
    case SpvOpINotEqual:                            return nir_op_ine;
    case SpvOpFOrdNotEqual:                         return nir_op_fne;
-   case SpvOpFUnordNotEqual:                       return nir_op_fne;
+   case SpvOpFUnordNotEqual:                       return nir_op_ufne;
    case SpvOpULessThan:                            return nir_op_ult;
    case SpvOpSLessThan:                            return nir_op_ilt;
    case SpvOpFOrdLessThan:                         return nir_op_flt;
-   case SpvOpFUnordLessThan:                       return nir_op_flt;
+   case SpvOpFUnordLessThan:                       return nir_op_uflt;
    case SpvOpUGreaterThan:          *swap = true;  return nir_op_ult;
    case SpvOpSGreaterThan:          *swap = true;  return nir_op_ilt;
    case SpvOpFOrdGreaterThan:       *swap = true;  return nir_op_flt;
-   case SpvOpFUnordGreaterThan:     *swap = true;  return nir_op_flt;
+   case SpvOpFUnordGreaterThan:     *swap = true;  return nir_op_uflt;
    case SpvOpULessThanEqual:        *swap = true;  return nir_op_uge;
    case SpvOpSLessThanEqual:        *swap = true;  return nir_op_ige;
    case SpvOpFOrdLessThanEqual:     *swap = true;  return nir_op_fge;
-   case SpvOpFUnordLessThanEqual:   *swap = true;  return nir_op_fge;
+   case SpvOpFUnordLessThanEqual:   *swap = true;  return nir_op_ufge;
    case SpvOpUGreaterThanEqual:                    return nir_op_uge;
    case SpvOpSGreaterThanEqual:                    return nir_op_ige;
    case SpvOpFOrdGreaterThanEqual:                 return nir_op_fge;
-   case SpvOpFUnordGreaterThanEqual:               return nir_op_fge;
+   case SpvOpFUnordGreaterThanEqual:               return nir_op_ufge;
 
    /* Conversions: */
    case SpvOpQuantizeToF16:         return nir_op_fquantize2f16;
-- 
2.14.3



More information about the mesa-dev mailing list