On Mon, Mar 21, 2016 at 5:06 AM, Samuel Iglesias Gonsálvez <
sigles...@igalia.com> wrote:

> From: Iago Toral Quiroga <ito...@igalia.com>
>
> ---
>  src/compiler/nir/glsl_to_nir.cpp | 6 ++++++
>  src/compiler/nir/nir_opcodes.py  | 2 ++
>  2 files changed, 8 insertions(+)
>
> diff --git a/src/compiler/nir/glsl_to_nir.cpp
> b/src/compiler/nir/glsl_to_nir.cpp
> index 952d787..d087a77 100644
> --- a/src/compiler/nir/glsl_to_nir.cpp
> +++ b/src/compiler/nir/glsl_to_nir.cpp
> @@ -1357,6 +1357,12 @@ nir_visitor::visit(ir_expression *ir)
>     case ir_unop_d2i:  result = nir_d2i(&b, srcs[0]);   break;
>     case ir_unop_d2u:  result = nir_d2u(&b, srcs[0]);   break;
>     case ir_unop_d2b:  result = nir_d2b(&b, srcs[0]);   break;
> +   case ir_unop_i2d:
> +      result = supports_ints ? nir_i2d(&b, srcs[0]) : nir_fmov(&b,
> srcs[0]);
> +      break;
> +   case ir_unop_u2d:
> +      result = supports_ints ? nir_u2d(&b, srcs[0]) : nir_fmov(&b,
> srcs[0]);
>

If you're going to be using the u2d opcode, you'd better support integers.


> +      break;
>     case ir_unop_i2u:
>     case ir_unop_u2i:
>     case ir_unop_bitcast_i2f:
> diff --git a/src/compiler/nir/nir_opcodes.py
> b/src/compiler/nir/nir_opcodes.py
> index a161ac1..cf6ce83 100644
> --- a/src/compiler/nir/nir_opcodes.py
> +++ b/src/compiler/nir/nir_opcodes.py
> @@ -164,6 +164,7 @@ unop_convert("f2u", tuint32, tfloat32, "src0") #
> Float-to-unsigned conversion
>  unop_convert("d2i", tint32, tfloat64, "src0") # Double-to-integer
> conversion.
>  unop_convert("d2u", tuint32, tfloat64, "src0") # Double-to-unsigned
> conversion.
>  unop_convert("i2f", tfloat32, tint32, "src0") # Integer-to-float
> conversion.
> +unop_convert("i2d", tfloat64, tint32, "src0") # Integer-to-double
> conversion.
>  # Float-to-boolean conversion
>  unop_convert("f2b", tbool, tfloat32, "src0 != 0.0f")
>  unop_convert("d2b", tbool, tfloat64, "src0 != 0.0")
> @@ -173,6 +174,7 @@ unop_convert("b2f", tfloat32, tbool, "src0 ? 1.0f :
> 0.0f")
>  unop_convert("i2b", tbool, tint32, "src0 != 0")
>  unop_convert("b2i", tint32, tbool, "src0 ? 1 : 0") # Boolean-to-int
> conversion
>  unop_convert("u2f", tfloat32, tuint32, "src0") # Unsigned-to-float
> conversion.
> +unop_convert("u2d", tfloat64, tuint32, "src0") # Unsigned-to-double
> conversion.
>  # double-to-float conversion
>  unop_convert("d2f", tfloat32, tfloat64, "src0") # Single to double
> precision
>  unop_convert("f2d", tfloat64, tfloat32, "src0") # Double to single
> precision
> --
> 2.5.0
>
> _______________________________________________
> 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