Commit e623007e authored by Alyssa Rosenzweig's avatar Alyssa Rosenzweig 💜 Committed by Marge Bot
Browse files

pan/bi: Add bi_bytemask_of_read_components helpers



Same purpose as the Midgard version, but the implementation is
*dramatically* simpler thanks to our more regular IR.
Signed-off-by: Alyssa Rosenzweig's avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <mesa/mesa!4150>
parent e94754a7
......@@ -74,3 +74,24 @@ bi_has_arg(bi_instruction *ins, unsigned arg)
return false;
}
uint16_t
bi_bytemask_of_read_components(bi_instruction *ins, unsigned node)
{
uint16_t mask = 0x0;
bi_foreach_src(ins, s) {
if (ins->src[s] != node) continue;
nir_alu_type T = ins->src_types[s];
unsigned size = nir_alu_type_get_type_size(T);
unsigned bytes = (MAX2(size, 8) / 8);
unsigned cmask = (1 << bytes) - 1;
for (unsigned i = 0; i < ARRAY_SIZE(ins->swizzle[s]); ++i) {
unsigned c = ins->swizzle[s][i];
mask |= (cmask << (c * bytes));
}
}
return mask;
}
......@@ -475,6 +475,7 @@ bool bi_has_outmod(bi_instruction *ins);
bool bi_has_source_mods(bi_instruction *ins);
bool bi_is_src_swizzled(bi_instruction *ins, unsigned s);
bool bi_has_arg(bi_instruction *ins, unsigned arg);
uint16_t bi_bytemask_of_read_components(bi_instruction *ins, unsigned node);
/* BIR passes */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment