aboutsummaryrefslogtreecommitdiff
path: root/reference_model/src/verify/verify_entry.cc
diff options
context:
space:
mode:
Diffstat (limited to 'reference_model/src/verify/verify_entry.cc')
-rw-r--r--reference_model/src/verify/verify_entry.cc32
1 files changed, 25 insertions, 7 deletions
diff --git a/reference_model/src/verify/verify_entry.cc b/reference_model/src/verify/verify_entry.cc
index 1f7c680..32614b6 100644
--- a/reference_model/src/verify/verify_entry.cc
+++ b/reference_model/src/verify/verify_entry.cc
@@ -38,7 +38,7 @@ bool verify(const CTensor* ref, const CTensor* refBnd, const CTensor* imp, const
return verifyULP(ref, imp, cfg.ulpInfo.ulp);
}
default: {
- WARNING("unsupported verification mode.");
+ WARNING("tosa verifier: unsupported verification mode.");
break;
}
}
@@ -57,40 +57,58 @@ extern "C"
// Check inputs for nullptr
if (!ref || !imp || !config_json)
{
- WARNING("one of the inputs is missing.");
+ WARNING("tosa verifier: one of the inputs is missing.");
return false;
}
// Extract verification config
if (!ref->name)
{
- WARNING("tensor name is not specified.");
+ WARNING("tosa verifier: tensor name is not specified.");
return false;
}
auto cfg = TosaReference::parseVerifyConfig(ref->name, config_json);
if (!cfg)
{
- WARNING("invalid json config.");
+ WARNING("tosa verifier: invalid json config.");
return false;
}
// Validate shape
if (ref->num_dims != imp->num_dims)
{
- WARNING("tensors have different number of dimensions.");
+ WARNING("tosa verifier: tensors have different number of dimensions.");
return false;
}
if (!ref->shape || !imp->shape)
{
- WARNING("one of tensors' shape is missing.");
+ WARNING("tosa verifier: one of tensors' shape is missing.");
return false;
}
if (std::vector(ref->shape, ref->shape + ref->num_dims) != std::vector(imp->shape, imp->shape + imp->num_dims))
{
- WARNING("tensors have different shapes.");
+ WARNING("tosa verifier: tensors have different shapes.");
return false;
}
+ // Validate data-type
+ if (ref->data_type == tosa_datatype_fp64_t)
+ {
+ if (cfg->dataType != TosaReference::mapToDType(imp->data_type))
+ {
+ WARNING("tosa verifier: incorrect tensor data type.");
+ return false;
+ }
+ }
+ else
+ {
+ if (ref->data_type != imp->data_type)
+ {
+ WARNING("tosa verifier: tensors have different data types.");
+ return false;
+ }
+ }
+
// Run verification
return verify(ref, ref_bnd, imp, *cfg);
}