68 lines
1.3 KiB
C
68 lines
1.3 KiB
C
#ifndef AMDUAT_PEL_PROGRAM_DAG_H
|
|
#define AMDUAT_PEL_PROGRAM_DAG_H
|
|
|
|
#include "amduat/asl/core.h"
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef uint32_t amduat_pel_node_id_t;
|
|
|
|
typedef struct {
|
|
amduat_octets_t name;
|
|
uint32_t version;
|
|
} amduat_pel_operation_id_t;
|
|
|
|
typedef enum {
|
|
AMDUAT_PEL_DAG_INPUT_EXTERNAL = 0,
|
|
AMDUAT_PEL_DAG_INPUT_NODE = 1
|
|
} amduat_pel_dag_input_kind_t;
|
|
|
|
typedef struct {
|
|
uint32_t input_index;
|
|
} amduat_pel_dag_input_external_t;
|
|
|
|
typedef struct {
|
|
amduat_pel_node_id_t node_id;
|
|
uint32_t output_index;
|
|
} amduat_pel_dag_input_node_t;
|
|
|
|
typedef struct {
|
|
amduat_pel_dag_input_kind_t kind;
|
|
union {
|
|
amduat_pel_dag_input_external_t external;
|
|
amduat_pel_dag_input_node_t node;
|
|
} value;
|
|
} amduat_pel_dag_input_t;
|
|
|
|
typedef struct {
|
|
amduat_pel_node_id_t id;
|
|
amduat_pel_operation_id_t op;
|
|
amduat_pel_dag_input_t *inputs;
|
|
size_t inputs_len;
|
|
amduat_octets_t params;
|
|
} amduat_pel_node_t;
|
|
|
|
typedef struct {
|
|
amduat_pel_node_id_t node_id;
|
|
uint32_t output_index;
|
|
} amduat_pel_root_ref_t;
|
|
|
|
typedef struct {
|
|
amduat_pel_node_t *nodes;
|
|
size_t nodes_len;
|
|
amduat_pel_root_ref_t *roots;
|
|
size_t roots_len;
|
|
} amduat_pel_program_t;
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* AMDUAT_PEL_PROGRAM_DAG_H */
|