mie: ir: builder: add mie_emitter support
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#ifndef MIE_IR_BUILDER_H_
|
||||
#define MIE_IR_BUILDER_H_
|
||||
|
||||
#include <mie/ir/emit.h>
|
||||
#include <mie/misc.h>
|
||||
#include <stddef.h>
|
||||
|
||||
@@ -30,9 +31,9 @@ MIE_API void mie_builder_step_into_block(
|
||||
MIE_API void mie_builder_step_out(struct mie_builder *builder);
|
||||
|
||||
MIE_API struct mie_op *mie_builder_put_op(
|
||||
struct mie_builder *, const char *dialect, const char *op,
|
||||
struct mie_builder *builder, const char *dialect, const char *op,
|
||||
struct mie_register **args, size_t nr_args);
|
||||
MIE_API enum mie_status mie_builder_put_name(
|
||||
struct mie_builder *, struct mie_name *name, const char *hint);
|
||||
struct mie_builder *builder, struct mie_name *name, const char *hint);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <mie/ctx.h>
|
||||
#include <mie/ir/block.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>
|
||||
@@ -13,6 +14,7 @@ struct builder_scope {
|
||||
};
|
||||
|
||||
struct mie_builder {
|
||||
struct mie_emitter b_base;
|
||||
struct mie_ctx *b_ctx;
|
||||
b_queue b_scope_stack;
|
||||
struct mie_op *b_root;
|
||||
@@ -28,6 +30,11 @@ struct mie_builder *mie_builder_create(struct mie_ctx *ctx, struct mie_op *root)
|
||||
|
||||
memset(out, 0x0, sizeof *out);
|
||||
|
||||
out->b_base.e_get_ctx = (mie_emit_get_ctx)mie_builder_get_ctx;
|
||||
out->b_base.e_put_op = (mie_emit_put_op)mie_builder_put_op;
|
||||
out->b_base.e_put_name = (mie_emit_put_name)mie_builder_put_name;
|
||||
out->b_base.e_put_block = NULL;
|
||||
|
||||
out->b_ctx = ctx;
|
||||
out->b_root = root;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user