Fixed in master. Marek
On Mon, Oct 29, 2018 at 6:50 AM Connor Abbott <cwabbo...@gmail.com> wrote: > ctx->f32_1 probably needs to be replaced by the appropriately-sized > float, like LLVMConstReal(1., ...) > On Mon, Oct 29, 2018 at 11:45 AM Timothy Arceri <tarc...@itsqueeze.com> > wrote: > > > > Hi Marek, > > > > It's late and I haven't dug into this any further but this patch causes > > a whole bunch of f64 piglit tests to fail for the radeonsi nir backend. > > > > e.g. > > > > ./bin/shader_runner > > > generated_tests/spec/glsl-4.00/execution/built-in-functions/fs-inverse-dmat2.shader_test > > -auto -fbo > > > > > > LLVM ERROR: Cannot select: 0x7fbc48075aa8: f64 = bitcast 0x7fbc48077730 > > 0x7fbc48077730: f32 = RCP 0x7fbc4806e788 > > 0x7fbc4806e788: f64 = fadd nsz 0x7fbc480757d0, 0x7fbc48075a40 > > 0x7fbc480757d0: f64 = fmul nsz 0x7fbc4806f0e0, 0x7fbc4806f420 > > 0x7fbc4806f0e0: f64 = bitcast 0x7fbc4806f078 > > > > On 30/8/18 6:13 am, Marek Olšák wrote: > > > From: Marek Olšák <marek.ol...@amd.com> > > > > > > Cc: 18.1 18.2 <mesa-sta...@lists.freedesktop.org> > > > --- > > > 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 c741a1ab62d..629cd2a7527 100644 > > > --- a/src/amd/common/ac_llvm_build.c > > > +++ b/src/amd/common/ac_llvm_build.c > > > @@ -554,21 +554,28 @@ LLVMValueRef ac_build_expand_to_vec4(struct > ac_llvm_context *ctx, > > > chan[num_channels++] = LLVMGetUndef(elemtype); > > > > > > return ac_build_gather_values(ctx, chan, 4); > > > } > > > > > > LLVMValueRef > > > 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)) > > > LLVMSetMetadata(ret, ctx->fpmath_md_kind, > ctx->fpmath_md_2p5_ulp); > > > return ret; > > > } > > > > > > /* Coordinates for cube map selection. sc, tc, and ma are as in > Table 8.27 > > > * of the OpenGL 4.5 (Compatibility Profile) specification, except > ma is > > > * already multiplied by two. id is the cube face number. > > > > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev