ac/llvm: remove the double frcp special handling
authorQiang Yu <yuq825@gmail.com>
Mon, 15 May 2023 03:23:06 +0000 (11:23 +0800)
committerMarge Bot <emma+marge@anholt.net>
Tue, 16 May 2023 03:29:01 +0000 (03:29 +0000)
KHR-GL45.gpu_shader_fp64.builtin.mod_* relaxed precision
requirement.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23012>

src/amd/llvm/ac_llvm_build.c
src/amd/llvm/ac_nir_to_llvm.c

index 423cedd..2dd1069 100644 (file)
@@ -711,10 +711,6 @@ LLVMValueRef ac_build_fdiv(struct ac_llvm_context *ctx, LLVMValueRef num, LLVMVa
    unsigned type_size = ac_get_type_size(LLVMTypeOf(den));
    const char *name;
 
-   /* For doubles, we need precise division to pass GLCTS. */
-   if (ctx->float_mode == AC_FLOAT_MODE_DEFAULT_OPENGL && type_size == 8)
-      return LLVMBuildFDiv(ctx->builder, num, den, "");
-
    if (type_size == 2)
       name = "llvm.amdgcn.rcp.f16";
    else if (type_size == 4)
index c1b3543..3adb8b1 100644 (file)
@@ -671,13 +671,8 @@ static bool visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
                                   src, 2, 0);
       break;
    case nir_op_frcp:
-      /* For doubles, we need precise division to pass GLCTS. */
-      if (ctx->ac.float_mode == AC_FLOAT_MODE_DEFAULT_OPENGL && ac_get_type_size(def_type) == 8) {
-         result = LLVMBuildFDiv(ctx->ac.builder, ctx->ac.f64_1, ac_to_float(&ctx->ac, src[0]), "");
-      } else {
-         result = emit_intrin_1f_param_scalar(&ctx->ac, "llvm.amdgcn.rcp",
-                                              ac_to_float_type(&ctx->ac, def_type), src[0]);
-      }
+      result = emit_intrin_1f_param_scalar(&ctx->ac, "llvm.amdgcn.rcp",
+                                           ac_to_float_type(&ctx->ac, def_type), src[0]);
       if (ctx->abi->clamp_div_by_zero)
          result = ac_build_fmin(&ctx->ac, result,
                                 LLVMConstReal(ac_to_float_type(&ctx->ac, def_type), FLT_MAX));