Let's handle 16-bit while we're at it.

On Thu, Mar 8, 2018 at 8:07 AM, Neil Roberts <nrobe...@igalia.com> wrote:

> The only change neccessary is to change the type of the constant used
> to compare against.
>
> This has been tested against the arb_gpu_shader_fp64/execution/
> fs-isinf-dvec tests using the ARB_gl_spirv branch.
> ---
>  src/compiler/spirv/vtn_alu.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/compiler/spirv/vtn_alu.c b/src/compiler/spirv/vtn_alu.c
> index d0c9e316935..2b03a2e4d09 100644
> --- a/src/compiler/spirv/vtn_alu.c
> +++ b/src/compiler/spirv/vtn_alu.c
> @@ -529,10 +529,15 @@ vtn_handle_alu(struct vtn_builder *b, SpvOp opcode,
>        val->ssa->def = nir_fne(&b->nb, src[0], src[0]);
>        break;
>
> -   case SpvOpIsInf:
> -      val->ssa->def = nir_ieq(&b->nb, nir_fabs(&b->nb, src[0]),
> -                                      nir_imm_float(&b->nb, INFINITY));
> +   case SpvOpIsInf: {
> +      nir_ssa_def *inf;
> +      if (src[0]->bit_size == 64)
> +         inf = nir_imm_double(&b->nb, INFINITY);
> +      else
> +         inf = nir_imm_float(&b->nb, INFINITY);
> +      val->ssa->def = nir_ieq(&b->nb, nir_fabs(&b->nb, src[0]), inf);
>        break;
> +   }
>
>     case SpvOpFUnordEqual:
>     case SpvOpFUnordNotEqual:
> --
> 2.14.3
>
> _______________________________________________
> 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

Reply via email to