mie: select: add support for target-specific nodes and lowering operations
This commit is contained in:
@@ -22,8 +22,8 @@ static enum mie_status push_op(
|
||||
struct mie_binary_op *op = (struct mie_binary_op *)instr;
|
||||
|
||||
struct mie_select_value *operands[] = {
|
||||
select_builder_get_value(builder, op->op_left),
|
||||
select_builder_get_value(builder, op->op_right),
|
||||
mie_select_builder_get_value(builder, op->op_left),
|
||||
mie_select_builder_get_value(builder, op->op_right),
|
||||
};
|
||||
size_t nr_operands = sizeof operands / sizeof operands[0];
|
||||
|
||||
@@ -32,15 +32,18 @@ static enum mie_status push_op(
|
||||
};
|
||||
size_t nr_results = sizeof result / sizeof result[0];
|
||||
|
||||
struct mie_select_value node = {0};
|
||||
struct mie_select_node *node;
|
||||
enum mie_status status = mie_select_graph_get_node(
|
||||
mie_select_builder_get_graph(builder), opcode, operands,
|
||||
nr_operands, result, nr_results, &node);
|
||||
mie_select_builder_get_graph(builder), mie_target_builtin(),
|
||||
opcode, operands, nr_operands, result, nr_results, &node);
|
||||
if (status != MIE_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
|
||||
return select_builder_set_value(builder, MIE_VALUE(instr), &node);
|
||||
struct mie_select_value value;
|
||||
mie_select_node_get_value(node, op->op_type, 0, &value);
|
||||
|
||||
return mie_select_builder_set_value(builder, MIE_VALUE(instr), &value);
|
||||
}
|
||||
|
||||
DEFINE_PUSH_FUNCTION(add, MIE_SELECT_OP_ADD);
|
||||
|
||||
Reference in New Issue
Block a user