IVGCVSW-5636 'Implement NNAPI caching functions'

* Fixed test failures.

!armnn:6617

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I9989ece8999d67dd40dfcf69b73f4d80f71687a4
diff --git a/CacheDataHandler.cpp b/CacheDataHandler.cpp
index 3688162..5f3a307 100644
--- a/CacheDataHandler.cpp
+++ b/CacheDataHandler.cpp
@@ -18,19 +18,22 @@
 
 void CacheDataHandler::Register(const HidlToken token, const size_t hashValue, const size_t cacheSize)
 {
-    if (m_CacheDataMap.find(hashValue) != m_CacheDataMap.end())
+    if (m_CacheDataMap.find(hashValue) != m_CacheDataMap.end()
+                        && m_CacheDataMap.at(hashValue).GetToken() == token
+                        && m_CacheDataMap.at(hashValue).GetCacheSize() == cacheSize)
     {
-        ALOGV("CacheHandler::Register() Token has been already registered.");
+        ALOGV("CacheHandler::Register() Hash value has already registered.");
         return;
     }
     CacheHandle cacheHandle(token, cacheSize);
     m_CacheDataMap.insert({hashValue, cacheHandle});
 }
 
-bool CacheDataHandler::Validate(const HidlToken token, const size_t hashValue) const
+bool CacheDataHandler::Validate(const HidlToken token, const size_t hashValue, const size_t cacheSize) const
 {
     return (m_CacheDataMap.find(hashValue) != m_CacheDataMap.end()
-                             && m_CacheDataMap.at(hashValue).GetToken() == token);
+                             && m_CacheDataMap.at(hashValue).GetToken() == token
+                             && m_CacheDataMap.at(hashValue).GetCacheSize() == cacheSize);
 }
 
 size_t CacheDataHandler::Hash(std::vector<uint8_t>& cacheData)
@@ -38,7 +41,7 @@
     std::size_t hash = cacheData.size();
     for (auto& i : cacheData)
     {
-        hash ^= std::hash<unsigned int>{}(i);
+        hash = ((hash << 5) - hash) + i;
     }
     return hash;
 }