Mesa (master): nir: Add an interface to turn a nir_src into a nir_ssa_def.

Eric Anholt anholt at kemper.freedesktop.org
Fri Apr 3 18:53:30 UTC 2015


Module: Mesa
Branch: master
Commit: 64bdfc698d6d9f543f82141330ae32de286b8417
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=64bdfc698d6d9f543f82141330ae32de286b8417

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Mar 27 14:19:46 2015 -0700

nir: Add an interface to turn a nir_src into a nir_ssa_def.

We use nir_ssa_defs for nir_builder args, so this takes a nir_src and
makes one so it can be passed in.

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

---

 src/glsl/nir/nir_builder.h |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h
index ecbdbe3..587d014 100644
--- a/src/glsl/nir/nir_builder.h
+++ b/src/glsl/nir/nir_builder.h
@@ -225,4 +225,23 @@ nir_swizzle(nir_builder *build, nir_ssa_def *src, unsigned swiz[4],
                      nir_imov_alu(build, alu_src, num_components);
 }
 
+/**
+ * Turns a nir_src into a nir_ssa_def * so it can be passed to
+ * nir_build_alu()-based builder calls.
+ */
+static inline nir_ssa_def *
+nir_ssa_for_src(nir_builder *build, nir_src src, int num_components)
+{
+   if (src.is_ssa && src.ssa->num_components == num_components)
+      return src.ssa;
+
+   nir_alu_src alu;
+   memset(&alu, 0, sizeof(alu));
+   alu.src = src;
+   for (int j = 0; j < 4; j++)
+      alu.swizzle[j] = j;
+
+   return nir_imov_alu(build, alu, num_components);
+}
+
 #endif /* NIR_BUILDER_H */




More information about the mesa-commit mailing list