gallivm/nir: copy compare ordering code from tgsi
authorDave Airlie <airlied@redhat.com>
Tue, 3 Dec 2019 04:48:03 +0000 (14:48 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 11 Dec 2019 23:16:41 +0000 (09:16 +1000)
This fixes some isinf/isnan tests copying what the tgsi code
paths do for float compares

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_nir.c

index 31b420b246ba2e2241385da52ef05659fa6b5139..8861a8324b5a89605419730db10db31291cbeb26 100644 (file)
@@ -235,7 +235,12 @@ static LLVMValueRef fcmp32(struct lp_build_nir_context *bld_base,
 {
    LLVMBuilderRef builder = bld_base->base.gallivm->builder;
    struct lp_build_context *flt_bld = get_flt_bld(bld_base, src_bit_size);
-   LLVMValueRef result = lp_build_cmp(flt_bld, compare, src[0], src[1]);
+   LLVMValueRef result;
+
+   if (compare != PIPE_FUNC_NOTEQUAL)
+      result = lp_build_cmp_ordered(flt_bld, compare, src[0], src[1]);
+   else
+      result = lp_build_cmp(flt_bld, compare, src[0], src[1]);
    if (src_bit_size == 64)
       result = LLVMBuildTrunc(builder, result, bld_base->int_bld.vec_type, "");
    return result;