mie: target: add result output to ir lowering callbacks

This commit is contained in:
2025-09-08 15:41:50 +01:00
parent 3a8a3b59f0
commit 225968e94e
2 changed files with 11 additions and 9 deletions

View File

@@ -6,18 +6,20 @@
#include <stddef.h> #include <stddef.h>
struct mie_target; struct mie_target;
struct mie_instr; struct mie_call;
struct mie_msg;
struct mie_select_builder; struct mie_select_builder;
struct mie_select_value;
struct mie_target_select_ops { struct mie_target_select_ops {
size_t (*s_node_name)( size_t (*s_node_name)(
const struct mie_target *, unsigned int, char *, size_t); const struct mie_target *, unsigned int, char *, size_t);
enum mie_status (*s_lower_call)( enum mie_status (*s_lower_call)(
const struct mie_target *, struct mie_select_builder *, const struct mie_target *, struct mie_select_builder *,
struct mie_instr *); struct mie_call *, struct mie_select_value *);
enum mie_status (*s_lower_msg)( enum mie_status (*s_lower_msg)(
const struct mie_target *, struct mie_select_builder *, const struct mie_target *, struct mie_select_builder *,
struct mie_instr *); struct mie_msg *, struct mie_select_value *);
}; };
MIE_API size_t mie_target_select_node_name( MIE_API size_t mie_target_select_node_name(
@@ -26,9 +28,9 @@ MIE_API size_t mie_target_select_node_name(
MIE_API enum mie_status mie_target_select_lower_call( MIE_API enum mie_status mie_target_select_lower_call(
const struct mie_target *target, struct mie_select_builder *builder, const struct mie_target *target, struct mie_select_builder *builder,
struct mie_instr *instr); struct mie_call *call, struct mie_select_value *result);
MIE_API enum mie_status mie_target_select_lower_msg( MIE_API enum mie_status mie_target_select_lower_msg(
const struct mie_target *target, struct mie_select_builder *builder, const struct mie_target *target, struct mie_select_builder *builder,
struct mie_instr *instr); struct mie_msg *msg, struct mie_select_value *result);
#endif #endif

View File

@@ -64,22 +64,22 @@ size_t mie_target_select_node_name(
enum mie_status mie_target_select_lower_call( enum mie_status mie_target_select_lower_call(
const struct mie_target *target, struct mie_select_builder *builder, const struct mie_target *target, struct mie_select_builder *builder,
struct mie_instr *instr) struct mie_call *call, struct mie_select_value *result)
{ {
if (!target->t_select || !target->t_select->s_lower_call) { if (!target->t_select || !target->t_select->s_lower_call) {
return MIE_ERR_NOT_SUPPORTED; return MIE_ERR_NOT_SUPPORTED;
} }
return target->t_select->s_lower_call(target, builder, instr); return target->t_select->s_lower_call(target, builder, call, result);
} }
enum mie_status mie_target_select_lower_msg( enum mie_status mie_target_select_lower_msg(
const struct mie_target *target, struct mie_select_builder *builder, const struct mie_target *target, struct mie_select_builder *builder,
struct mie_instr *instr) struct mie_msg *msg, struct mie_select_value *result)
{ {
if (!target->t_select || !target->t_select->s_lower_msg) { if (!target->t_select || !target->t_select->s_lower_msg) {
return MIE_ERR_NOT_SUPPORTED; return MIE_ERR_NOT_SUPPORTED;
} }
return target->t_select->s_lower_call(target, builder, instr); return target->t_select->s_lower_msg(target, builder, msg, result);
} }