<div dir="ltr"><div>Fixed in master.</div><div><br></div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 29, 2018 at 6:50 AM Connor Abbott <<a href="mailto:cwabbott0@gmail.com">cwabbott0@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ctx->f32_1 probably needs to be replaced by the appropriately-sized<br>
float, like LLVMConstReal(1., ...)<br>
On Mon, Oct 29, 2018 at 11:45 AM Timothy Arceri <<a href="mailto:tarceri@itsqueeze.com" target="_blank">tarceri@itsqueeze.com</a>> wrote:<br>
><br>
> Hi Marek,<br>
><br>
> It's late and I haven't dug into this any further but this patch causes<br>
> a whole bunch of f64 piglit tests to fail for the radeonsi nir backend.<br>
><br>
> e.g.<br>
><br>
> ./bin/shader_runner<br>
> generated_tests/spec/glsl-4.00/execution/built-in-functions/fs-inverse-dmat2.shader_test<br>
> -auto -fbo<br>
><br>
><br>
> LLVM ERROR: Cannot select: 0x7fbc48075aa8: f64 = bitcast 0x7fbc48077730<br>
>    0x7fbc48077730: f32 = RCP 0x7fbc4806e788<br>
>      0x7fbc4806e788: f64 = fadd nsz 0x7fbc480757d0, 0x7fbc48075a40<br>
>        0x7fbc480757d0: f64 = fmul nsz 0x7fbc4806f0e0, 0x7fbc4806f420<br>
>          0x7fbc4806f0e0: f64 = bitcast 0x7fbc4806f078<br>
><br>
> On 30/8/18 6:13 am, Marek Olšák wrote:<br>
> > From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank">marek.olsak@amd.com</a>><br>
> ><br>
> > Cc: 18.1 18.2 <<a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.freedesktop.org</a>><br>
> > ---<br>
> >   src/amd/common/ac_llvm_build.c | 9 ++++++++-<br>
> >   1 file changed, 8 insertions(+), 1 deletion(-)<br>
> ><br>
> > diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c<br>
> > index c741a1ab62d..629cd2a7527 100644<br>
> > --- a/src/amd/common/ac_llvm_build.c<br>
> > +++ b/src/amd/common/ac_llvm_build.c<br>
> > @@ -554,21 +554,28 @@ LLVMValueRef ac_build_expand_to_vec4(struct ac_llvm_context *ctx,<br>
> >               chan[num_channels++] = LLVMGetUndef(elemtype);<br>
> ><br>
> >       return ac_build_gather_values(ctx, chan, 4);<br>
> >   }<br>
> ><br>
> >   LLVMValueRef<br>
> >   ac_build_fdiv(struct ac_llvm_context *ctx,<br>
> >             LLVMValueRef num,<br>
> >             LLVMValueRef den)<br>
> >   {<br>
> > -     LLVMValueRef ret = LLVMBuildFDiv(ctx->builder, num, den, "");<br>
> > +     /* If we do (num / den), LLVM >= 7.0 does:<br>
> > +      *    return num * v_rcp_f32(den * (fabs(den) > 0x1.0p+96f ? 0x1.0p-32f : 1.0f));<br>
> > +      *<br>
> > +      * If we do (num * (1 / den)), LLVM does:<br>
> > +      *    return num * v_rcp_f32(den);<br>
> > +      */<br>
> > +     LLVMValueRef rcp = LLVMBuildFDiv(ctx->builder, ctx->f32_1, den, "");<br>
> > +     LLVMValueRef ret = LLVMBuildFMul(ctx->builder, num, rcp, "");<br>
> ><br>
> >       /* Use v_rcp_f32 instead of precise division. */<br>
> >       if (!LLVMIsConstant(ret))<br>
> >               LLVMSetMetadata(ret, ctx->fpmath_md_kind, ctx->fpmath_md_2p5_ulp);<br>
> >       return ret;<br>
> >   }<br>
> ><br>
> >   /* Coordinates for cube map selection. sc, tc, and ma are as in Table 8.27<br>
> >    * of the OpenGL 4.5 (Compatibility Profile) specification, except ma is<br>
> >    * already multiplied by two. id is the cube face number.<br>
> ><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>