mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 22:00:13 +01:00
ac: revert new LLVM 7.0 behavior for fdiv
Cc: 18.2 <mesa-stable@lists.freedesktop.org> Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
This commit is contained in:
parent
662db03577
commit
a5f35aa742
1 changed files with 8 additions and 1 deletions
|
|
@ -561,7 +561,14 @@ ac_build_fdiv(struct ac_llvm_context *ctx,
|
||||||
LLVMValueRef num,
|
LLVMValueRef num,
|
||||||
LLVMValueRef den)
|
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. */
|
/* Use v_rcp_f32 instead of precise division. */
|
||||||
if (!LLVMIsConstant(ret))
|
if (!LLVMIsConstant(ret))
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue