amduat/include/amduat/pel/opreg_kernel.h

67 lines
1.7 KiB
C
Raw Normal View History

#ifndef AMDUAT_PEL_OPREG_KERNEL_H
#define AMDUAT_PEL_OPREG_KERNEL_H
#include "amduat/asl/core.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define AMDUAT_PEL_KERNEL_OP_CONCAT_NAME "pel.bytes.concat"
#define AMDUAT_PEL_KERNEL_OP_SLICE_NAME "pel.bytes.slice"
#define AMDUAT_PEL_KERNEL_OP_CONST_NAME "pel.bytes.const"
#define AMDUAT_PEL_KERNEL_OP_HASH_ASL1_NAME "pel.bytes.hash.asl1"
enum {
AMDUAT_PEL_KERNEL_OP_CODE_CONCAT = 0x0001u,
AMDUAT_PEL_KERNEL_OP_CODE_SLICE = 0x0002u,
AMDUAT_PEL_KERNEL_OP_CODE_CONST = 0x0003u,
AMDUAT_PEL_KERNEL_OP_CODE_HASH_ASL1 = 0x0004u
};
enum {
AMDUAT_PEL_KERNEL_STATUS_CONCAT_TYPE_TAG_MISMATCH = 0x00010001u,
AMDUAT_PEL_KERNEL_STATUS_SLICE_RANGE_OUT_OF_BOUNDS = 0x00020001u
};
typedef enum {
AMDUAT_PEL_KERNEL_OP_CONCAT = 1,
AMDUAT_PEL_KERNEL_OP_SLICE = 2,
AMDUAT_PEL_KERNEL_OP_CONST = 3,
AMDUAT_PEL_KERNEL_OP_HASH_ASL1 = 4
} amduat_pel_kernel_op_kind_t;
typedef struct {
amduat_pel_kernel_op_kind_t kind;
uint32_t kernel_op_code;
size_t min_inputs;
size_t max_inputs;
size_t outputs_len;
} amduat_pel_kernel_op_desc_t;
struct amduat_pel_kernel_params;
typedef struct amduat_pel_kernel_params amduat_pel_kernel_params_t;
const amduat_pel_kernel_op_desc_t *amduat_pel_kernel_op_lookup(
amduat_octets_t name,
uint32_t version);
bool amduat_pel_kernel_op_eval(
const amduat_pel_kernel_op_desc_t *desc,
const amduat_artifact_t *inputs,
size_t inputs_len,
const amduat_pel_kernel_params_t *params,
amduat_artifact_t **out_outputs,
size_t *out_outputs_len,
uint32_t *out_status_code);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* AMDUAT_PEL_OPREG_KERNEL_H */