aboutsummaryrefslogtreecommitdiff
path: root/reference_model/src/operators.cc
diff options
context:
space:
mode:
Diffstat (limited to 'reference_model/src/operators.cc')
-rw-r--r--reference_model/src/operators.cc33
1 files changed, 32 insertions, 1 deletions
diff --git a/reference_model/src/operators.cc b/reference_model/src/operators.cc
index a0b5013..5796129 100644
--- a/reference_model/src/operators.cc
+++ b/reference_model/src/operators.cc
@@ -580,6 +580,37 @@ extern "C"
return tosa_status_valid;
}
+ tosa_status_t tosa_run_erf(tosa_tensor_t client_input, tosa_tensor_t client_output)
+ {
+ // Create operator attributes
+ TosaNoneAttribute attr;
+
+ // Create tensors
+ tosa::TosaSerializationTensor* input = translate_client_tensor(client_input, "input");
+ tosa::TosaSerializationTensor* output = translate_client_tensor(client_output, "output");
+
+ // Create operator
+ auto op = new tosa::TosaSerializationOperator(tosa::Op::Op_ERF, tosa::Attribute::Attribute_NONE, &attr,
+ { input->GetName() }, { output->GetName() });
+
+ // Create a tosa single-op basic block
+ tosa::TosaSerializationBasicBlock block("erf", "main", { op }, { input, output }, { input->GetName() },
+ { output->GetName() });
+
+ // Setup model
+ TosaReference::ModelRunnerImpl runner;
+ TOSA_RETURN_ON_GRAPH_STATUS_ERROR(runner.initialize(block));
+ TOSA_RETURN_ON_ERROR(runner.setInput(input->GetName(), client_input.data, client_input.size));
+
+ // Execute
+ TOSA_RETURN_ON_GRAPH_STATUS_ERROR(runner.run());
+
+ // Extract outputs
+ TOSA_RETURN_ON_ERROR(runner.getOutput(output->GetName(), client_output.data, client_output.size));
+
+ return tosa_status_valid;
+ }
+
tosa_status_t tosa_run_add(tosa_tensor_t client_input1, tosa_tensor_t client_input2, tosa_tensor_t client_output)
{
// Create operator attributes
@@ -2324,4 +2355,4 @@ extern "C"
return tosa_status_valid;
}
-} // extern "C" \ No newline at end of file
+} // extern "C"