}
}
+static void
+mir_print_swizzle(unsigned *swizzle)
+{
+ printf(".");
+
+ for (unsigned i = 0; i < 16; ++i)
+ putchar(components[swizzle[i]]);
+}
+
static const char *
mir_get_unit(unsigned unit)
{
case TAG_LOAD_STORE_4: {
midgard_load_store_op op = ins->load_store.op;
- const char *name = load_store_opcode_names[op];
+ const char *name = load_store_opcode_props[op].name;
assert(name);
printf("%s", name);
printf(", ");
mir_print_index(ins->src[0]);
+ mir_print_swizzle(ins->swizzle[0]);
printf(", ");
if (ins->has_inline_constant)
printf("#%d", ins->inline_constant);
- else
+ else {
mir_print_index(ins->src[1]);
+ mir_print_swizzle(ins->swizzle[1]);
+ }
printf(", ");
mir_print_index(ins->src[2]);
+ mir_print_swizzle(ins->swizzle[2]);
if (ins->has_constants) {
uint32_t *uc = ins->constants;
void
mir_print_block(midgard_block *block)
{
- printf("block%d: {\n", block->source_id);
+ printf("block%u: {\n", block->source_id);
- mir_foreach_instr_in_block(block, ins) {
- mir_print_instruction(ins);
+ if (block->is_scheduled) {
+ mir_foreach_bundle_in_block(block, bundle) {
+ for (unsigned i = 0; i < bundle->instruction_count; ++i)
+ mir_print_instruction(bundle->instructions[i]);
+
+ printf("\n");
+ }
+ } else {
+ mir_foreach_instr_in_block(block, ins) {
+ mir_print_instruction(ins);
+ }
}
printf("}");
if (block->nr_successors) {
printf(" -> ");
for (unsigned i = 0; i < block->nr_successors; ++i) {
- printf("block%d%s", block->successors[i]->source_id,
+ printf("block%u%s", block->successors[i]->source_id,
(i + 1) != block->nr_successors ? ", " : "");
}
}
printf(" from { ");
mir_foreach_predecessor(block, pred)
- printf("block%d ", pred->source_id);
+ printf("block%u ", pred->source_id);
printf("}");
printf("\n\n");
mir_print_block(block);
}
}
-
-void
-mir_print_bundle(midgard_bundle *bundle)
-{
- printf("[\n");
-
- for (unsigned i = 0; i < bundle->instruction_count; ++i) {
- midgard_instruction *ins = bundle->instructions[i];
- mir_print_instruction(ins);
- }
-
- printf("]\n");
-}