pan/midgard: Add flatten_mir helper

We would like to flatten a linked list of midgard_instructions into an
array of midgard_instruction pointers on the heap.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig
2019-08-31 11:08:39 -07:00
parent 0ecfcbf462
commit adda411263

View File

@@ -620,6 +620,28 @@ schedule_bundle(compiler_context *ctx, midgard_block *block, midgard_instruction
return bundle;
}
/* We would like to flatten the linked list of midgard_instructions in a bundle
* to an array of pointers on the heap for easy indexing */
static midgard_instruction **
flatten_mir(midgard_block *block, unsigned *len)
{
*len = list_length(&block->instructions);
if (!(*len))
return NULL;
midgard_instruction **instructions =
calloc(sizeof(midgard_instruction *), *len);
unsigned i = 0;
mir_foreach_instr_in_block(block, ins)
instructions[i++] = ins;
return instructions;
}
/* Schedule a single block by iterating its instruction to create bundles.
* While we go, tally about the bundle sizes to compute the block size. */