mie: dialect: update Op emitter functions to use mie_emitter

This commit is contained in:
2026-01-25 15:00:37 +00:00
parent fe511011ec
commit 0a791fdfb2
12 changed files with 111 additions and 71 deletions

View File

@@ -1,5 +1,5 @@
#include <mie/dialect/dialect.h>
#include <mie/ir/builder.h>
#include <mie/ir/emit.h>
#include <mie/ir/op-definition.h>
#include <mie/ir/op.h>
#include <mie/ir/region.h>
@@ -33,11 +33,14 @@ static enum mie_status print(struct mie_printer *printer, const struct mie_op *o
b_stream_write_char(printer->p_stream, ' ');
mie_printer_print_region(printer, &op->op_regions.items[0], 0);
struct mie_region *if_region = mie_op_get_first_region(op);
struct mie_region *else_region = mie_op_get_next_region(op, if_region);
if (MIE_VECTOR_COUNT(op->op_regions) > 1) {
mie_printer_print_region(printer, if_region, 0);
if (else_region) {
b_stream_write_string(printer->p_stream, " else ", NULL);
mie_printer_print_region(printer, &op->op_regions.items[1], 0);
mie_printer_print_region(printer, else_region, 0);
}
return MIE_SUCCESS;
@@ -48,19 +51,19 @@ static enum mie_status parse(struct mie_parser *parser, struct mie_op *out)
return MIE_SUCCESS;
}
struct mie_op *mie_scf_put_if(
struct mie_builder *builder, struct mie_register *cond,
struct mie_op *mie_scf_if_put(
struct mie_emitter *e, struct mie_register *cond,
const struct mie_type *result_type, struct mie_region **out_true,
struct mie_region **out_false, const char *name)
{
struct mie_op *op = mie_builder_put_op(builder, "scf", "if", &cond, 1);
struct mie_op *op = mie_emitter_put_op(e, "scf", "if", &cond, 1);
if (!op) {
return NULL;
}
if (result_type) {
struct mie_register *result = mie_op_add_result(op, result_type);
mie_builder_put_name(builder, &result->reg_name, name);
mie_emitter_put_name(e, &result->reg_name, name);
}
struct mie_region *r_true = mie_op_add_region(op);