Mesa (master): nir: Add helper functions to get the instruction that generated a nir_src
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 9 20:57:01 UTC 2018
Module: Mesa
Branch: master
Commit: 10f4a8871ec694b9d2835d670dfc1436736c23d2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=10f4a8871ec694b9d2835d670dfc1436736c23d2
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Tue Jun 5 19:19:39 2018 -0700
nir: Add helper functions to get the instruction that generated a nir_src
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Thomas Helland <thomashelland90 at gmail.com>
---
src/compiler/nir/nir.h | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index e0df95c391..9527079a9e 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -2520,6 +2520,29 @@ bool nir_foreach_dest(nir_instr *instr, nir_foreach_dest_cb cb, void *state);
bool nir_foreach_src(nir_instr *instr, nir_foreach_src_cb cb, void *state);
nir_const_value *nir_src_as_const_value(nir_src src);
+
+static inline struct nir_instr *
+nir_src_instr(const struct nir_src *src)
+{
+ return src->is_ssa ? src->ssa->parent_instr : NULL;
+}
+
+#define NIR_SRC_AS_(name, c_type, type_enum, cast_macro) \
+static inline c_type * \
+nir_src_as_ ## name (struct nir_src *src) \
+{ \
+ return src->is_ssa && src->ssa->parent_instr->type == type_enum \
+ ? cast_macro(src->ssa->parent_instr) : NULL; \
+} \
+static inline const c_type * \
+nir_src_as_ ## name ## _const(const struct nir_src *src) \
+{ \
+ return src->is_ssa && src->ssa->parent_instr->type == type_enum \
+ ? cast_macro(src->ssa->parent_instr) : NULL; \
+}
+
+NIR_SRC_AS_(alu_instr, nir_alu_instr, nir_instr_type_alu, nir_instr_as_alu)
+
bool nir_src_is_dynamically_uniform(nir_src src);
bool nir_srcs_equal(nir_src src1, nir_src src2);
void nir_instr_rewrite_src(nir_instr *instr, nir_src *src, nir_src new_src);
More information about the mesa-commit
mailing list