mie: add a stub instruction selection system

This commit is contained in:
2025-08-16 20:57:43 +01:00
parent 7ef90750db
commit 9126638045
6 changed files with 83 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
#ifndef MIE_SELECT_BUILDER_H_
#define MIE_SELECT_BUILDER_H_
#include <mie/misc.h>
struct mie_select_builder;
MIE_API struct mie_select_builder *mie_select_builder_create(void);
MIE_API void mie_select_builder_destroy(struct mie_select_builder *builder);
#endif

View File

@@ -0,0 +1,29 @@
#ifndef MIE_SELECT_GRAPH_H_
#define MIE_SELECT_GRAPH_H_
#include <blue/core/btree.h>
#include <blue/core/queue.h>
#include <mie/misc.h>
struct mie_select_value;
struct mie_select_value {
struct mie_select_node *v_node;
unsigned int v_index;
};
struct mie_select_use {
struct mie_select_node *u_user;
struct mie_select_value u_value;
b_queue u_entry;
};
struct mie_select_graph {
b_queue g_nodes;
b_queue g_use;
};
MIE_API struct mie_select_graph *mie_select_graph_create(void);
MIE_API void mie_select_graph_destroy(struct mie_select_graph *graph);
#endif

View File

@@ -0,0 +1,21 @@
#ifndef MIE_SELECT_NODE_H_
#define MIE_SELECT_NODE_H_
#include <blue/core/queue.h>
#include <mie/status.h>
#include <mie/type.h>
#define MIE_SELECT_NODE_OUTPUT_MAX 4
struct mie_backend;
struct mie_value;
struct mie_select_node {
unsigned long n_opcode;
struct mie_value *n_value;
b_queue n_entry;
struct mie_backend *n_backend;
const struct mie_type t_outputs[MIE_SELECT_NODE_OUTPUT_MAX];
};
#endif

View File

@@ -0,0 +1,13 @@
#ifndef MIE_SELECT_OPCODE_H_
#define MIE_SELECT_OPCODE_H_
enum mie_select_opcode {
MIE_SELECT_OP_NONE = 0,
MIE_SELECT_OP_ENTRY,
MIE_SELECT_OP_ADD,
MIE_SELECT_OP_SUB,
MIE_SELECT_OP_MUL,
MIE_SELECT_OP_DIV,
};
#endif

View File

@@ -0,0 +1,7 @@
#ifndef MIE_TARGET_TARGET_H_
#define MIE_TARGET_TARGET_H_
struct mie_target {
};
#endif

2
mie/select/opcode.c Normal file
View File

@@ -0,0 +1,2 @@
#include <mie/select/node.h>
#include <mie/select/opcode.h>