aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/lima/ir
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/lima/ir')
-rw-r--r--src/gallium/drivers/lima/ir/pp/liveness.c4
-rw-r--r--src/gallium/drivers/lima/ir/pp/ppir.h20
2 files changed, 13 insertions, 11 deletions
diff --git a/src/gallium/drivers/lima/ir/pp/liveness.c b/src/gallium/drivers/lima/ir/pp/liveness.c
index 1bc1dc812c6..ccc01a3545f 100644
--- a/src/gallium/drivers/lima/ir/pp/liveness.c
+++ b/src/gallium/drivers/lima/ir/pp/liveness.c
@@ -148,7 +148,7 @@ ppir_liveness_instr_srcs(ppir_compiler *comp, ppir_instr *instr)
_mesa_set_add(instr->live_in_set, &instr->live_in[reg->regalloc_index]);
}
else {
- unsigned int mask = ppir_src_get_mask(node);
+ unsigned int mask = ppir_src_get_mask(src);
/* read reg is type register, need to check if this sets
* any additional bits in the current mask */
@@ -209,7 +209,7 @@ ppir_liveness_instr_dest(ppir_compiler *comp, ppir_instr *instr)
_mesa_set_remove_key(instr->live_in_set, &instr->live_in[reg->regalloc_index]);
}
else {
- unsigned int mask = ppir_src_get_mask(node);
+ unsigned int mask = dest->write_mask;
/* written reg is type register, need to check if this clears
* the remaining mask to remove it from the live set */
if (instr->live_in[reg->regalloc_index].mask ==
diff --git a/src/gallium/drivers/lima/ir/pp/ppir.h b/src/gallium/drivers/lima/ir/pp/ppir.h
index b2637cb68c3..2b4629bcaab 100644
--- a/src/gallium/drivers/lima/ir/pp/ppir.h
+++ b/src/gallium/drivers/lima/ir/pp/ppir.h
@@ -478,15 +478,6 @@ static inline ppir_dest *ppir_node_get_dest(ppir_node *node)
}
}
-static inline int ppir_src_get_mask(ppir_node *node)
-{
- ppir_dest *dest = ppir_node_get_dest(node);
- if (dest)
- return dest->write_mask;
-
- return 0x01;
-}
-
static inline int ppir_node_get_src_num(ppir_node *node)
{
switch (node->type) {
@@ -635,6 +626,17 @@ static inline int ppir_target_get_dest_reg_index(ppir_dest *dest)
return -1;
}
+static inline int ppir_src_get_mask(ppir_src *src)
+{
+ ppir_reg *reg = ppir_src_get_reg(src);
+ int mask = 0;
+
+ for (int i = 0; i < reg->num_components; i++)
+ mask |= (1 << src->swizzle[i]);
+
+ return mask;
+}
+
static inline bool ppir_target_is_scaler(ppir_dest *dest)
{
switch (dest->type) {