On 12 June 2017 at 17:33, Juan A. Suarez Romero <jasua...@igalia.com> wrote: > --- > src/compiler/spirv/vtn_glsl450.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/src/compiler/spirv/vtn_glsl450.c > b/src/compiler/spirv/vtn_glsl450.c > index 5e75c3c..ce80360 100644 > --- a/src/compiler/spirv/vtn_glsl450.c > +++ b/src/compiler/spirv/vtn_glsl450.c > @@ -225,6 +225,25 @@ build_nmin(nir_builder *b, nir_ssa_def *x, nir_ssa_def > *y) > } > > /** > + * Returns > + * if (isNan(x)) > + * return y > + * else if (isNan(y)) > + * return x > + * else > + * return min(x, y) Little typo here. Should be max(x,y)
> + */ > +static nir_ssa_def * > +build_nmax(nir_builder *b, nir_ssa_def *x, nir_ssa_def *y) > +{ > + return nir_bcsel(b, nir_fne(b, x, x), > + y, > + nir_bcsel(b, nir_fne(b, y, y), > + x, > + nir_fmax(b, x, y))); > +} > + > +/** > * Approximate asin(x) by the formula: > * asin~(x) = sign(x) * (pi/2 - sqrt(1 - |x|) * (pi/2 + |x|(pi/4 - 1 + > |x|(p0 + |x|p1)))) > * > @@ -555,6 +574,10 @@ handle_glsl450_alu(struct vtn_builder *b, enum > GLSLstd450 entrypoint, > val->ssa->def = build_nmin(nb, src[0], src[1]); > return; > > + case GLSLstd450NMax: > + val->ssa->def = build_nmax(nb, src[0], src[1]); > + return; > + > case GLSLstd450Log: > val->ssa->def = build_log(nb, src[0]); > return; > -- > 2.9.4 > > _______________________________________________ > 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