mie: ir: builder: add mie_emitter support
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#ifndef MIE_IR_BUILDER_H_
|
#ifndef MIE_IR_BUILDER_H_
|
||||||
#define MIE_IR_BUILDER_H_
|
#define MIE_IR_BUILDER_H_
|
||||||
|
|
||||||
|
#include <mie/ir/emit.h>
|
||||||
#include <mie/misc.h>
|
#include <mie/misc.h>
|
||||||
#include <stddef.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 void mie_builder_step_out(struct mie_builder *builder);
|
||||||
|
|
||||||
MIE_API struct mie_op *mie_builder_put_op(
|
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);
|
struct mie_register **args, size_t nr_args);
|
||||||
MIE_API enum mie_status mie_builder_put_name(
|
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
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include <mie/ctx.h>
|
#include <mie/ctx.h>
|
||||||
#include <mie/ir/block.h>
|
#include <mie/ir/block.h>
|
||||||
#include <mie/ir/builder.h>
|
#include <mie/ir/builder.h>
|
||||||
|
#include <mie/ir/emit.h>
|
||||||
#include <mie/ir/op-definition.h>
|
#include <mie/ir/op-definition.h>
|
||||||
#include <mie/ir/op.h>
|
#include <mie/ir/op.h>
|
||||||
#include <mie/ir/region.h>
|
#include <mie/ir/region.h>
|
||||||
@@ -13,6 +14,7 @@ struct builder_scope {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct mie_builder {
|
struct mie_builder {
|
||||||
|
struct mie_emitter b_base;
|
||||||
struct mie_ctx *b_ctx;
|
struct mie_ctx *b_ctx;
|
||||||
b_queue b_scope_stack;
|
b_queue b_scope_stack;
|
||||||
struct mie_op *b_root;
|
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);
|
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_ctx = ctx;
|
||||||
out->b_root = root;
|
out->b_root = root;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user