mie: add a stub instruction selection system
This commit is contained in:
11
mie/include/mie/select/builder.h
Normal file
11
mie/include/mie/select/builder.h
Normal 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
|
||||||
29
mie/include/mie/select/graph.h
Normal file
29
mie/include/mie/select/graph.h
Normal 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
|
||||||
21
mie/include/mie/select/node.h
Normal file
21
mie/include/mie/select/node.h
Normal 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
|
||||||
13
mie/include/mie/select/opcode.h
Normal file
13
mie/include/mie/select/opcode.h
Normal 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
|
||||||
7
mie/include/mie/target/target.h
Normal file
7
mie/include/mie/target/target.h
Normal 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
2
mie/select/opcode.c
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#include <mie/select/node.h>
|
||||||
|
#include <mie/select/opcode.h>
|
||||||
Reference in New Issue
Block a user