Refine DAG structural diagnostics
This commit is contained in:
parent
ef2fd955f1
commit
ef3edc7762
|
|
@ -169,6 +169,7 @@ typedef enum {
|
|||
AMDUAT_PEL_PREP_ERROR_INPUT_ARITY,
|
||||
AMDUAT_PEL_PREP_ERROR_PARAM_DECODE,
|
||||
AMDUAT_PEL_PREP_ERROR_CYCLE,
|
||||
AMDUAT_PEL_PREP_ERROR_NODE_OUTPUT_INDEX,
|
||||
AMDUAT_PEL_PREP_ERROR_ROOT_MISSING,
|
||||
AMDUAT_PEL_PREP_ERROR_ROOT_OUTPUT_INDEX
|
||||
} amduat_pel_program_prep_error_t;
|
||||
|
|
@ -630,10 +631,19 @@ static amduat_pel_program_prepare_result_t amduat_program_prepare(
|
|||
}
|
||||
if (input->value.node.output_index >=
|
||||
prepared->ops[dep_index]->outputs_len) {
|
||||
if (out_error != NULL) {
|
||||
out_error->kind = AMDUAT_PEL_PREP_ERROR_NODE_OUTPUT_INDEX;
|
||||
out_error->node_id = input->value.node.node_id;
|
||||
out_error->index = input->value.node.output_index;
|
||||
}
|
||||
amduat_prepared_free(prepared);
|
||||
return AMDUAT_PEL_PROGRAM_PREP_INVALID;
|
||||
}
|
||||
} else if (input->kind != AMDUAT_PEL_DAG_INPUT_EXTERNAL) {
|
||||
if (out_error != NULL) {
|
||||
out_error->kind = AMDUAT_PEL_PREP_ERROR_INVALID_INPUT_KIND;
|
||||
out_error->node_id = node->id;
|
||||
}
|
||||
amduat_prepared_free(prepared);
|
||||
return AMDUAT_PEL_PROGRAM_PREP_INVALID;
|
||||
}
|
||||
|
|
@ -806,6 +816,13 @@ static bool amduat_pel_program_dag_exec_internal(
|
|||
AMDUAT_PEL_DAG_DIAG_CYCLE,
|
||||
"invalid program: dependency cycle");
|
||||
break;
|
||||
case AMDUAT_PEL_PREP_ERROR_NODE_OUTPUT_INDEX:
|
||||
amduat_diag_setf(out_result,
|
||||
AMDUAT_PEL_DAG_DIAG_OUTPUT_INDEX,
|
||||
"invalid program: node %u output index %u out of range",
|
||||
(unsigned int)prep_error.node_id,
|
||||
(unsigned int)prep_error.index);
|
||||
break;
|
||||
case AMDUAT_PEL_PREP_ERROR_ROOT_MISSING:
|
||||
amduat_diag_setf(out_result,
|
||||
AMDUAT_PEL_DAG_DIAG_MISSING_NODE,
|
||||
|
|
|
|||
Loading…
Reference in a new issue