mie: select: add support for target-specific nodes and lowering operations

This commit is contained in:
2025-09-08 15:42:22 +01:00
parent 5ca045fd5b
commit eb260fb35c
15 changed files with 277 additions and 76 deletions

View File

@@ -13,19 +13,23 @@ static enum mie_status push(
struct mie_type *ptr_type = mie_ctx_get_type(
mie_select_builder_get_ctx(builder), MIE_TYPE_PTR);
struct mie_select_value frame_index;
struct mie_select_node *frame_index;
enum mie_status status = mie_select_graph_get_node(
graph, MIE_SELECT_OP_FRAME_INDEX, NULL, 0, &ptr_type, 1,
&frame_index);
graph, mie_target_builtin(), MIE_SELECT_OP_FRAME_INDEX, NULL, 0,
&ptr_type, 1, &frame_index);
if (status != MIE_SUCCESS) {
return status;
}
frame_index.v_node->n_flags = MIE_SELECT_NODE_F_IVALUE;
frame_index.v_node->n_value_i = graph->g_frame_index++;
frame_index->n_flags = MIE_SELECT_NODE_F_IVALUE;
frame_index->n_value.i = graph->g_frame_index++;
return select_builder_set_value(builder, MIE_VALUE(instr), &frame_index);
struct mie_select_value frame_index_value;
mie_select_node_get_value(frame_index, ptr_type, 0, &frame_index_value);
return mie_select_builder_set_value(
builder, MIE_VALUE(instr), &frame_index_value);
}
struct select_instr_type select_alloca = {