From afa64a2105016744258829d521399472c372cd44 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Wed, 24 Jul 2019 15:25:33 -0700 Subject: lima/ppir: introduce accessors for ppir_node sources Sometimes we need to walk through ppir_node sources, common accessor for all node types will simplify code a lot. Reviewed-by: Qiang Yu Signed-off-by: Vasily Khoruzhick --- src/gallium/drivers/lima/ir/pp/ppir.h | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/gallium/drivers/lima') diff --git a/src/gallium/drivers/lima/ir/pp/ppir.h b/src/gallium/drivers/lima/ir/pp/ppir.h index e8c6e015f0e..2d37d80715a 100644 --- a/src/gallium/drivers/lima/ir/pp/ppir.h +++ b/src/gallium/drivers/lima/ir/pp/ppir.h @@ -426,6 +426,47 @@ static inline ppir_dest *ppir_node_get_dest(ppir_node *node) } } +static inline int ppir_node_get_src_num(ppir_node *node) +{ + switch (node->type) { + case ppir_node_type_alu: + return ppir_node_to_alu(node)->num_src; + case ppir_node_type_branch: + return 2; + case ppir_node_type_load_texture: + case ppir_node_type_load: + case ppir_node_type_store: + return 1; + default: + return 0; + } + + return 0; +} + +static inline ppir_src *ppir_node_get_src(ppir_node *node, int idx) +{ + if (idx < 0 || idx >= ppir_node_get_src_num(node)) + return NULL; + + switch (node->type) { + case ppir_node_type_alu: + return &ppir_node_to_alu(node)->src[idx]; + case ppir_node_type_branch: + return &ppir_node_to_branch(node)->src[idx]; + case ppir_node_type_load_texture: + return &ppir_node_to_load_texture(node)->src_coords; + case ppir_node_type_load: + return &ppir_node_to_load(node)->src; + case ppir_node_type_store: + return &ppir_node_to_store(node)->src; + default: + break; + } + + return NULL; +} + static inline void ppir_node_target_assign(ppir_src *src, ppir_dest *dest) { src->type = dest->type; -- cgit v1.2.3