Module: Mesa
Branch: master
Commit: a5f35aa742c3f1e2fae6a6c2fb53f92822f0cb70
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a5f35aa742c3f1e2fae6a6c2fb53f92822f0cb70

Author: Marek Olšák <[email protected]>
Date:   Fri Aug 24 23:00:37 2018 -0400

ac: revert new LLVM 7.0 behavior for fdiv

Cc: 18.2 <[email protected]>
Tested-by: Dieter Nützel <[email protected]>

---

 src/amd/common/ac_llvm_build.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index c741a1ab62..629cd2a752 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -561,7 +561,14 @@ ac_build_fdiv(struct ac_llvm_context *ctx,
              LLVMValueRef num,
              LLVMValueRef den)
 {
-       LLVMValueRef ret = LLVMBuildFDiv(ctx->builder, num, den, "");
+       /* If we do (num / den), LLVM >= 7.0 does:
+        *    return num * v_rcp_f32(den * (fabs(den) > 0x1.0p+96f ? 0x1.0p-32f 
: 1.0f));
+        *
+        * If we do (num * (1 / den)), LLVM does:
+        *    return num * v_rcp_f32(den);
+        */
+       LLVMValueRef rcp = LLVMBuildFDiv(ctx->builder, ctx->f32_1, den, "");
+       LLVMValueRef ret = LLVMBuildFMul(ctx->builder, num, rcp, "");
 
        /* Use v_rcp_f32 instead of precise division. */
        if (!LLVMIsConstant(ret))

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to