mie: cf: implement op printer callbacks

This commit is contained in:
2026-01-17 10:29:47 +00:00
parent c410e0a6e3
commit e5ecdd40e8
2 changed files with 29 additions and 0 deletions

View File

@@ -1,9 +1,30 @@
#include <mie/dialect/dialect.h> #include <mie/dialect/dialect.h>
#include <mie/ir/op-definition.h> #include <mie/ir/op-definition.h>
#include <mie/ir/op.h>
#include <mie/macros.h> #include <mie/macros.h>
#include <mie/print/printer.h>
static enum mie_status print(struct mie_printer *printer, const struct mie_op *op) static enum mie_status print(struct mie_printer *printer, const struct mie_op *op)
{ {
if (MIE_VECTOR_COUNT(op->op_args) != 1) {
return MIE_SUCCESS;
}
if (MIE_VECTOR_COUNT(op->op_successors) != 2) {
return MIE_SUCCESS;
}
const struct mie_op_arg *cond = &op->op_args.items[0];
const struct mie_op_successor *if_true = &op->op_successors.items[0];
const struct mie_op_successor *if_false = &op->op_successors.items[1];
b_stream_write_char(printer->p_stream, ' ');
mie_printer_print_op_arg(printer, cond, false);
b_stream_write_string(printer->p_stream, ", ", NULL);
mie_printer_print_op_successor(printer, if_true, true);
b_stream_write_string(printer->p_stream, ", ", NULL);
mie_printer_print_op_successor(printer, if_false, true);
return MIE_SUCCESS; return MIE_SUCCESS;
} }

View File

@@ -1,9 +1,17 @@
#include <mie/dialect/dialect.h> #include <mie/dialect/dialect.h>
#include <mie/ir/block.h>
#include <mie/ir/op-definition.h> #include <mie/ir/op-definition.h>
#include <mie/ir/op.h>
#include <mie/macros.h> #include <mie/macros.h>
#include <mie/print/printer.h>
static enum mie_status print(struct mie_printer *printer, const struct mie_op *op) static enum mie_status print(struct mie_printer *printer, const struct mie_op *op)
{ {
b_stream_write_char(printer->p_stream, ' ');
const struct mie_op_successor *successor = &op->op_successors.items[0];
mie_printer_print_op_successor(printer, successor, true);
return MIE_SUCCESS; return MIE_SUCCESS;
} }