Detect new CPU features using cpuid

Change-Id: Ie82e1ae4d21e758a0b27b59dd130793f6cf7d14f
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2020-03-11 16:50:49 +01:00
committed by sys_ocldev
parent d9d27cd4ed
commit 2213b8808f
2 changed files with 20 additions and 4 deletions

View File

@@ -49,6 +49,8 @@ struct CpuInfo {
static const uint64_t featureSha = 0x800000000ULL;
static const uint64_t featureMpx = 0x1000000000ULL;
static const uint64_t featureClflush = 0x2000000000ULL;
static const uint64_t featureTsc = 0x4000000000ULL;
static const uint64_t featureRdtscp = 0x8000000000ULL;
CpuInfo() : features(featureNone) {
}
@@ -74,10 +76,18 @@ struct CpuInfo {
features |= cpuInfo[3] & BIT(0) ? featureFpu : featureNone;
}
{
features |= cpuInfo[3] & BIT(4) ? featureTsc : featureNone;
}
{
features |= cpuInfo[3] & BIT(15) ? featureCmov : featureNone;
}
{
features |= cpuInfo[3] & BIT(19) ? featureClflush : featureNone;
}
{
features |= cpuInfo[3] & BIT(23) ? featureMmx : featureNone;
}
@@ -141,10 +151,6 @@ struct CpuInfo {
{
features |= cpuInfo[2] & BIT(30) ? featureRdrnd : featureNone;
}
{
features |= cpuInfo[3] & BIT(19) ? featureClflush : featureNone;
}
}
if (numFunctionIds >= 7u) {
@@ -175,6 +181,10 @@ struct CpuInfo {
{
features |= cpuInfo[2] & BIT(5) ? featureLzcnt : featureNone;
}
{
features |= cpuInfo[3] & BIT(27) ? featureRdtscp : featureNone;
}
}
}