2022-03-11 01:27:38 +08:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2022 Intel Corporation
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
2022-06-14 07:13:43 +08:00
|
|
|
#include "shared/source/utilities/const_stringref.h"
|
|
|
|
|
2022-03-11 01:27:38 +08:00
|
|
|
#include "platforms.h"
|
|
|
|
|
|
|
|
#include <sstream>
|
|
|
|
#include <string>
|
|
|
|
|
2022-06-14 07:13:43 +08:00
|
|
|
struct AheadOfTimeConfig {
|
|
|
|
union {
|
|
|
|
uint32_t ProductConfig;
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
uint32_t Revision : 6;
|
|
|
|
uint32_t Reserved : 8;
|
|
|
|
uint32_t Minor : 8;
|
|
|
|
uint32_t Major : 10;
|
|
|
|
} ProductConfigID;
|
|
|
|
};
|
|
|
|
};
|
2022-06-13 02:46:42 +08:00
|
|
|
|
2022-06-14 07:13:43 +08:00
|
|
|
struct ProductConfigHelper {
|
2022-06-14 20:49:57 +08:00
|
|
|
template <typename EqComparableT>
|
|
|
|
static auto findAcronymWithoutDash(const EqComparableT &lhs) {
|
|
|
|
return [&lhs](const auto &rhs) {
|
|
|
|
return lhs == rhs || rhs.isEqualWithoutSeparator('-', lhs.c_str());
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
template <typename EqComparableT>
|
|
|
|
static auto findMapAcronymWithoutDash(const EqComparableT &lhs) {
|
|
|
|
return [&lhs](const auto &rhs) {
|
|
|
|
NEO::ConstStringRef ptrStr(rhs.first);
|
|
|
|
return lhs == ptrStr || ptrStr.isEqualWithoutSeparator('-', lhs.c_str());
|
|
|
|
};
|
|
|
|
}
|
|
|
|
static void adjustDeviceName(std::string &device);
|
2022-06-14 07:13:43 +08:00
|
|
|
static std::string parseMajorMinorValue(AheadOfTimeConfig config);
|
|
|
|
static std::string parseMajorMinorRevisionValue(AheadOfTimeConfig config);
|
|
|
|
inline static std::string parseMajorMinorRevisionValue(AOT::PRODUCT_CONFIG config) {
|
2022-03-11 01:27:38 +08:00
|
|
|
std::stringstream stringConfig;
|
2022-06-14 07:13:43 +08:00
|
|
|
AheadOfTimeConfig aotConfig = {0};
|
|
|
|
aotConfig.ProductConfig = config;
|
|
|
|
return parseMajorMinorRevisionValue(aotConfig);
|
2022-03-11 01:27:38 +08:00
|
|
|
}
|
|
|
|
|
2022-06-14 07:13:43 +08:00
|
|
|
static AOT::PRODUCT_CONFIG returnProductConfigForAcronym(const std::string &device);
|
|
|
|
static AOT::RELEASE returnReleaseForAcronym(const std::string &device);
|
|
|
|
static AOT::FAMILY returnFamilyForAcronym(const std::string &device);
|
|
|
|
static NEO::ConstStringRef getAcronymForAFamily(AOT::FAMILY family);
|
2022-03-11 01:27:38 +08:00
|
|
|
};
|