diff options
-rw-r--r-- | src/amd/common/ac_llvm_build.c | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c | 8 |
2 files changed, 2 insertions, 7 deletions
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index b2bf1bf7b51..baa921d6559 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -439,6 +439,7 @@ ac_build_fdiv(struct ac_llvm_context *ctx, { LLVMValueRef ret = LLVMBuildFDiv(ctx->builder, num, den, ""); + /* Use v_rcp_f32 instead of precise division. */ if (!LLVMIsConstant(ret)) LLVMSetMetadata(ret, ctx->fpmath_md_kind, ctx->fpmath_md_2p5_ulp); return ret; diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c index a27586b3fff..cec33c38b4e 100644 --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_alu.c @@ -668,13 +668,7 @@ static void emit_fdiv(const struct lp_build_tgsi_action *action, struct si_shader_context *ctx = si_shader_context(bld_base); emit_data->output[emit_data->chan] = - LLVMBuildFDiv(ctx->ac.builder, - emit_data->args[0], emit_data->args[1], ""); - - /* Use v_rcp_f32 instead of precise division. */ - if (!LLVMIsConstant(emit_data->output[emit_data->chan])) - LLVMSetMetadata(emit_data->output[emit_data->chan], - ctx->fpmath_md_kind, ctx->fpmath_md_2p5_ulp); + ac_build_fdiv(&ctx->ac, emit_data->args[0], emit_data->args[1]); } /* 1/sqrt is translated to rsq for f32 if fp32 denormals are not enabled in |