diff --git a/mie/include/mie/select/builder.h b/mie/include/mie/select/builder.h new file mode 100644 index 0000000..b530f26 --- /dev/null +++ b/mie/include/mie/select/builder.h @@ -0,0 +1,11 @@ +#ifndef MIE_SELECT_BUILDER_H_ +#define MIE_SELECT_BUILDER_H_ + +#include + +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 diff --git a/mie/include/mie/select/graph.h b/mie/include/mie/select/graph.h new file mode 100644 index 0000000..fd538e9 --- /dev/null +++ b/mie/include/mie/select/graph.h @@ -0,0 +1,29 @@ +#ifndef MIE_SELECT_GRAPH_H_ +#define MIE_SELECT_GRAPH_H_ + +#include +#include +#include + +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 diff --git a/mie/include/mie/select/node.h b/mie/include/mie/select/node.h new file mode 100644 index 0000000..8a94e82 --- /dev/null +++ b/mie/include/mie/select/node.h @@ -0,0 +1,21 @@ +#ifndef MIE_SELECT_NODE_H_ +#define MIE_SELECT_NODE_H_ + +#include +#include +#include + +#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 diff --git a/mie/include/mie/select/opcode.h b/mie/include/mie/select/opcode.h new file mode 100644 index 0000000..25d0203 --- /dev/null +++ b/mie/include/mie/select/opcode.h @@ -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 diff --git a/mie/include/mie/target/target.h b/mie/include/mie/target/target.h new file mode 100644 index 0000000..4002d43 --- /dev/null +++ b/mie/include/mie/target/target.h @@ -0,0 +1,7 @@ +#ifndef MIE_TARGET_TARGET_H_ +#define MIE_TARGET_TARGET_H_ + +struct mie_target { +}; + +#endif diff --git a/mie/select/opcode.c b/mie/select/opcode.c new file mode 100644 index 0000000..810d5b6 --- /dev/null +++ b/mie/select/opcode.c @@ -0,0 +1,2 @@ +#include +#include