pan/bi: Assume SSA for helper invocation analysis
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17794>
This commit is contained in:
committed by
Marge Bot
parent
94511618be
commit
30528bac5a
@@ -202,15 +202,14 @@ bi_helper_block_update(BITSET_WORD *deps, bi_block *block)
|
||||
bi_foreach_instr_in_block_rev(block, I) {
|
||||
/* If a destination is required by helper invocation... */
|
||||
bi_foreach_dest(I, d) {
|
||||
if (!BITSET_TEST(deps, bi_get_node(I->dest[d])))
|
||||
if (!BITSET_TEST(deps, I->dest[d].value))
|
||||
continue;
|
||||
|
||||
/* ...so are the sources */
|
||||
bi_foreach_src(I, s) {
|
||||
if (I->src[s].type == BI_INDEX_NORMAL) {
|
||||
unsigned node = bi_get_node(I->src[s]);
|
||||
progress |= !BITSET_TEST(deps, node);
|
||||
BITSET_SET(deps, node);
|
||||
if (bi_is_ssa(I->src[s])) {
|
||||
progress |= !BITSET_TEST(deps, I->src[s].value);
|
||||
BITSET_SET(deps, I->src[s].value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,8 +223,7 @@ bi_helper_block_update(BITSET_WORD *deps, bi_block *block)
|
||||
void
|
||||
bi_analyze_helper_requirements(bi_context *ctx)
|
||||
{
|
||||
unsigned temp_count = bi_max_temp(ctx);
|
||||
BITSET_WORD *deps = calloc(sizeof(BITSET_WORD), BITSET_WORDS(temp_count));
|
||||
BITSET_WORD *deps = calloc(sizeof(BITSET_WORD), ctx->ssa_alloc);
|
||||
|
||||
/* Initialize with the sources of instructions consuming
|
||||
* derivatives */
|
||||
@@ -234,8 +232,8 @@ bi_analyze_helper_requirements(bi_context *ctx)
|
||||
if (!bi_instr_uses_helpers(I)) continue;
|
||||
|
||||
bi_foreach_src(I, s) {
|
||||
if (I->src[s].type == BI_INDEX_NORMAL)
|
||||
BITSET_SET(deps, bi_get_node(I->src[s]));
|
||||
if (bi_is_ssa(I->src[s]))
|
||||
BITSET_SET(deps, I->src[s].value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,8 +264,8 @@ bi_analyze_helper_requirements(bi_context *ctx)
|
||||
bool exec = false;
|
||||
|
||||
bi_foreach_dest(I, d) {
|
||||
assert(I->dest[d].type == BI_INDEX_NORMAL);
|
||||
exec |= BITSET_TEST(deps, bi_get_node(I->dest[d]));
|
||||
assert(bi_is_ssa(I->dest[d]));
|
||||
exec |= BITSET_TEST(deps, I->dest[d].value);
|
||||
}
|
||||
|
||||
I->skip = !exec;
|
||||
|
||||
Reference in New Issue
Block a user