2025-12-20 14:27:26 +01:00
|
|
|
#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 */
|