Mesa (master): nir: add a helper function for getting the number of source components

Connor Abbott cwabbott0 at kemper.freedesktop.org
Tue Jan 27 02:30:14 UTC 2015


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

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Sun Jan 25 11:42:34 2015 -0500

nir: add a helper function for getting the number of source components

Unlike with non-SSA ALU instructions, where if they're per-component
you have to look at the writemask to know which source channels are
being used, SSA ALU instructions always have all the possible channels
enabled so we can just look at the number of components in the SSA
definition for per-component instructions to say how many source
components are being used.

v2: use new name nir_ssa_alu_instr_src_components()

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>
Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>

---

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

diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
index 3fb9d3b..980fdd0 100644
--- a/src/glsl/nir/nir.h
+++ b/src/glsl/nir/nir.h
@@ -652,6 +652,21 @@ nir_alu_instr_channel_used(nir_alu_instr *instr, unsigned src, unsigned channel)
    return (instr->dest.write_mask >> channel) & 1;
 }
 
+/*
+ * For instructions whose destinations are SSA, get the number of channels
+ * used for a source
+ */
+static inline unsigned
+nir_ssa_alu_instr_src_components(nir_alu_instr *instr, unsigned src)
+{
+   assert(instr->dest.dest.is_ssa);
+
+   if (nir_op_infos[instr->op].input_sizes[src] > 0)
+      return nir_op_infos[instr->op].input_sizes[src];
+
+   return instr->dest.dest.ssa.num_components;
+}
+
 typedef enum {
    nir_deref_type_var,
    nir_deref_type_array,




More information about the mesa-commit mailing list