nir: Add helper functions to get the instruction that generated a nir_src
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Thomas Helland <thomashelland90@gmail.com>
This commit is contained in:
@@ -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);
|
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);
|
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_src_is_dynamically_uniform(nir_src src);
|
||||||
bool nir_srcs_equal(nir_src src1, nir_src src2);
|
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);
|
void nir_instr_rewrite_src(nir_instr *instr, nir_src *src, nir_src new_src);
|
||||||
|
Reference in New Issue
Block a user