[Mesa-dev] [PATCH 23/29] nir: add i2d and u2d opcodes

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Mar 21 12:06:02 UTC 2016


From: Iago Toral Quiroga <itoral at 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]);
+      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



More information about the mesa-dev mailing list