Remove unused CPU features

Signed-off-by: Sebastian Luzynski <sebastian.jozef.luzynski@intel.com>
This commit is contained in:
Sebastian Luzynski
2022-03-29 12:01:17 +00:00
committed by Compute-Runtime-Automation
parent aa46dd9cdf
commit 01e76998d4
3 changed files with 2 additions and 209 deletions

View File

@@ -18,43 +18,9 @@
namespace NEO { namespace NEO {
struct CpuInfo { struct CpuInfo {
static const uint64_t featureNone = 0x000000000ULL; static const uint64_t featureNone = 0x000000000ULL;
static const uint64_t featureGenericIA32 = 0x000000001ULL;
static const uint64_t featureFpu = 0x000000002ULL;
static const uint64_t featureCmov = 0x000000004ULL;
static const uint64_t featureMmx = 0x000000008ULL;
static const uint64_t featureFxsave = 0x000000010ULL;
static const uint64_t featureSse = 0x000000020ULL;
static const uint64_t featureSsE2 = 0x000000040ULL;
static const uint64_t featureSsE3 = 0x000000080ULL;
static const uint64_t featureSssE3 = 0x000000100ULL;
static const uint64_t featureSsE41 = 0x000000200ULL;
static const uint64_t featureSsE42 = 0x000000400ULL;
static const uint64_t featureMovbe = 0x000000800ULL;
static const uint64_t featurePopcnt = 0x000001000ULL;
static const uint64_t featurePclmulqdq = 0x000002000ULL;
static const uint64_t featureAes = 0x000004000ULL;
static const uint64_t featureF16C = 0x000008000ULL;
static const uint64_t featureAvx = 0x000010000ULL;
static const uint64_t featureRdrnd = 0x000020000ULL;
static const uint64_t featureFma = 0x000040000ULL;
static const uint64_t featureBmi = 0x000080000ULL;
static const uint64_t featureLzcnt = 0x000100000ULL;
static const uint64_t featureHle = 0x000200000ULL;
static const uint64_t featureRtm = 0x000400000ULL;
static const uint64_t featureAvX2 = 0x000800000ULL; static const uint64_t featureAvX2 = 0x000800000ULL;
static const uint64_t featureNeon = 0x001000000ULL; static const uint64_t featureNeon = 0x001000000ULL;
static const uint64_t featureKncni = 0x004000000ULL;
static const uint64_t featureAvX512F = 0x008000000ULL;
static const uint64_t featureAdx = 0x010000000ULL;
static const uint64_t featureRdseed = 0x020000000ULL;
static const uint64_t featureAvX512Er = 0x100000000ULL;
static const uint64_t featureAvX512Pf = 0x200000000ULL;
static const uint64_t featureAvX512Cd = 0x400000000ULL;
static const uint64_t featureSha = 0x800000000ULL;
static const uint64_t featureMpx = 0x1000000000ULL;
static const uint64_t featureClflush = 0x2000000000ULL; static const uint64_t featureClflush = 0x2000000000ULL;
static const uint64_t featureTsc = 0x4000000000ULL;
static const uint64_t featureRdtscp = 0x8000000000ULL;
CpuInfo() : features(featureNone) { CpuInfo() : features(featureNone) {
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2021 Intel Corporation * Copyright (C) 2021-2022 Intel Corporation
* *
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
@@ -17,88 +17,11 @@ void CpuInfo::detect() const {
cpuid(cpuInfo, 0u); cpuid(cpuInfo, 0u);
auto numFunctionIds = cpuInfo[0]; auto numFunctionIds = cpuInfo[0];
if (numFunctionIds >= 1u) { if (numFunctionIds >= 1u) {
cpuid(cpuInfo, 1u); cpuid(cpuInfo, 1u);
{
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(19) ? featureClflush : featureNone;
} }
{
features |= cpuInfo[3] & BIT(23) ? featureMmx : featureNone;
}
{
features |= cpuInfo[3] & BIT(24) ? featureFxsave : featureNone;
}
{
features |= cpuInfo[3] & BIT(25) ? featureSse : featureNone;
}
{
features |= cpuInfo[3] & BIT(26) ? featureSsE2 : featureNone;
}
{
features |= cpuInfo[2] & BIT(0) ? featureSsE3 : featureNone;
}
{
features |= cpuInfo[2] & BIT(1) ? featurePclmulqdq : featureNone;
}
{
features |= cpuInfo[2] & BIT(9) ? featureSssE3 : featureNone;
}
{
features |= cpuInfo[2] & BIT(12) ? featureFma : featureNone;
}
{
features |= cpuInfo[2] & BIT(19) ? featureSsE41 : featureNone;
}
{
features |= cpuInfo[2] & BIT(20) ? featureSsE42 : featureNone;
}
{
features |= cpuInfo[2] & BIT(22) ? featureMovbe : featureNone;
}
{
features |= cpuInfo[2] & BIT(23) ? featurePopcnt : featureNone;
}
{
features |= cpuInfo[2] & BIT(25) ? featureAes : featureNone;
}
{
features |= cpuInfo[2] & BIT(28) ? featureAvx : featureNone;
}
{
features |= cpuInfo[2] & BIT(29) ? featureF16C : featureNone;
}
{
features |= cpuInfo[2] & BIT(30) ? featureRdrnd : featureNone;
}
} }
if (numFunctionIds >= 7u) { if (numFunctionIds >= 7u) {
@@ -107,34 +30,10 @@ void CpuInfo::detect() const {
auto mask = BIT(5) | BIT(3) | BIT(8); auto mask = BIT(5) | BIT(3) | BIT(8);
features |= (cpuInfo[1] & mask) == mask ? featureAvX2 : featureNone; features |= (cpuInfo[1] & mask) == mask ? featureAvX2 : featureNone;
} }
{
auto mask = BIT(3) | BIT(8);
features |= (cpuInfo[1] & mask) == mask ? featureBmi : featureNone;
}
{
features |= cpuInfo[1] & BIT(4) ? featureHle : featureNone;
}
{
features |= cpuInfo[1] & BIT(11) ? featureRtm : featureNone;
}
} }
cpuid(cpuInfo, 0x80000000); cpuid(cpuInfo, 0x80000000);
auto maxExtendedId = cpuInfo[0]; auto maxExtendedId = cpuInfo[0];
if (maxExtendedId >= 0x80000001) {
cpuid(cpuInfo, 0x80000001);
{
features |= cpuInfo[2] & BIT(5) ? featureLzcnt : featureNone;
}
{
features |= cpuInfo[3] & BIT(27) ? featureRdtscp : featureNone;
}
}
if (maxExtendedId >= 0x80000008) { if (maxExtendedId >= 0x80000008) {
cpuid(cpuInfo, 0x80000008); cpuid(cpuInfo, 0x80000008);
{ {

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 Intel Corporation * Copyright (C) 2019-2022 Intel Corporation
* *
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
@@ -49,32 +49,8 @@ TEST(CpuInfoTest, giveFunctionIsNotAvailableWhenFeatureIsNotSupportedThenMaskBit
CpuInfo testCpuInfo; CpuInfo testCpuInfo;
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureFpu));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureCmov));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureMmx));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureFxsave));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSse));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE2));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE3));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSssE3));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE41));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE42));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureMovbe));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featurePopcnt));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featurePclmulqdq));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAes));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureF16C));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvx));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureRdrnd));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureFma));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureBmi));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureLzcnt));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureHle));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureRtm));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvX2)); EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvX2));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureClflush)); EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureClflush));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureTsc));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureRdtscp));
CpuInfo::cpuidFunc = defaultCpuidFunc; CpuInfo::cpuidFunc = defaultCpuidFunc;
} }
@@ -85,32 +61,8 @@ TEST(CpuInfoTest, giveFunctionIsAvailableWhenFeatureIsNotSupportedThenMaskBitIsO
CpuInfo testCpuInfo; CpuInfo testCpuInfo;
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureFpu));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureCmov));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureMmx));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureFxsave));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSse));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE2));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE3));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSssE3));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE41));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE42));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureMovbe));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featurePopcnt));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featurePclmulqdq));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAes));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureF16C));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvx));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureRdrnd));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureFma));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureBmi));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureLzcnt));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureHle));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureRtm));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvX2)); EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvX2));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureClflush)); EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureClflush));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureTsc));
EXPECT_FALSE(testCpuInfo.isFeatureSupported(CpuInfo::featureRdtscp));
CpuInfo::cpuidFunc = defaultCpuidFunc; CpuInfo::cpuidFunc = defaultCpuidFunc;
} }
@@ -121,32 +73,8 @@ TEST(CpuInfoTest, whenFeatureIsSupportedThenMaskBitIsOn) {
CpuInfo testCpuInfo; CpuInfo testCpuInfo;
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureFpu));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureCmov));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureMmx));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureFxsave));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureSse));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE2));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE3));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureSssE3));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE41));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureSsE42));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureMovbe));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featurePopcnt));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featurePclmulqdq));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureAes));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureF16C));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvx));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureRdrnd));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureFma));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureBmi));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureLzcnt));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureHle));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureRtm));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvX2)); EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureAvX2));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureClflush)); EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureClflush));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureTsc));
EXPECT_TRUE(testCpuInfo.isFeatureSupported(CpuInfo::featureRdtscp));
CpuInfo::cpuidFunc = defaultCpuidFunc; CpuInfo::cpuidFunc = defaultCpuidFunc;
} }