diff options
author | evacha01 <evan.chandler@arm.com> | 2024-02-07 11:21:55 +0000 |
---|---|---|
committer | evacha01 <evan.chandler@arm.com> | 2024-03-07 12:06:38 +0000 |
commit | 9c96eefbaca6c85be79529bce7ff04fd7dfe3a0d (patch) | |
tree | 55647ee0216800b621bd0b27277c6f895929ef3d /reference_model/test | |
parent | 6e1e2bc06bff785e87577f24064bbc846300f8fd (diff) | |
download | reference_model-9c96eefbaca6c85be79529bce7ff04fd7dfe3a0d.tar.gz |
FULL data gen mode for FP16
Signed-off-by: evacha01 <evan.chandler@arm.com>
Change-Id: I81bb322132daf25328a40342edc62d8e1db9edd6
Diffstat (limited to 'reference_model/test')
-rw-r--r-- | reference_model/test/generate_tests.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/reference_model/test/generate_tests.cpp b/reference_model/test/generate_tests.cpp index 564af4a..294705c 100644 --- a/reference_model/test/generate_tests.cpp +++ b/reference_model/test/generate_tests.cpp @@ -1556,4 +1556,57 @@ TEST_CASE("positive - FP32 rfft2d dot product (values -8, -7 & -6 from the end)" } } +TEST_CASE("positive - FP16 full range") +{ + std::string templateJsonCfg = R"({ + "tensors" : { + "input0" : { + "generator": "FULL_RANGE", + "data_type": "FP16", + "input_type": "VARIABLE", + "shape" : [ 48, 49, 47 ], + "input_pos": 0, + "op" : "CEIL", + "full_range_info": { + "start_val": _START_ + } + } + } + })"; + + const std::string tosaName = "input0"; + const size_t tosaElements = 48 * 49 * 47; + + SUBCASE("ceil - startVal 0") + { + std::string jsonCfg = templateJsonCfg; + update_json_template(jsonCfg, "_START_", "0"); + + std::vector<half_float::half> buffer(tosaElements); + REQUIRE(tgd_generate_data(jsonCfg.c_str(), tosaName.c_str(), (void*)buffer.data(), tosaElements * 2)); + std::vector<uint16_t> expected = { 0, 1, 2 }; + check_output<half_float::half>(buffer, expected); + + std::vector<half_float::half> last_three(buffer.end() - std::min<int>(3, buffer.size()), buffer.end()); + // To calculate last_expected: last value = tosaElements % 65535 - 1 + startVal + std::vector<uint16_t> last_expected = { 45005, 45006, 45007 }; + check_output<half_float::half>(last_three, last_expected); + } + SUBCASE("ceil - startVal 100") + { + std::string jsonCfg = templateJsonCfg; + update_json_template(jsonCfg, "_START_", "100"); + + std::vector<half_float::half> buffer(tosaElements); + REQUIRE(tgd_generate_data(jsonCfg.c_str(), tosaName.c_str(), (void*)buffer.data(), tosaElements * 2)); + std::vector<uint16_t> expected = { 100, 101, 102 }; + check_output<half_float::half>(buffer, expected); + + std::vector<half_float::half> last_three(buffer.end() - std::min<int>(3, buffer.size()), buffer.end()); + // To calculate last_expected: last value = tosaElements % 65535 - 1 + startVal + std::vector<uint16_t> last_expected = { 45105, 45106, 45107 }; + check_output<half_float::half>(last_three, last_expected); + } +} + TEST_SUITE_END(); // generate |