Add cpuid check for CLFLUSH
Change-Id: Ie76f314f7dac0cbc6bf987eab95ad0508f994fb7 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
a43bbc13e3
commit
d36e7972f3
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
set(NEO_CORE_UTILITIES_TESTS
|
set(NEO_CORE_UTILITIES_TESTS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cpuinfo_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/spinlock_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/spinlock_tests.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,143 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017-2019 Intel Corporation
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "core/utilities/cpu_info.h"
|
||||||
|
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
using namespace NEO;
|
||||||
|
|
||||||
|
void mockCpuidEnableAll(int cpuInfo[4], int functionId) {
|
||||||
|
cpuInfo[0] = -1;
|
||||||
|
cpuInfo[1] = -1;
|
||||||
|
cpuInfo[2] = -1;
|
||||||
|
cpuInfo[3] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mockCpuidFunctionAvailableDisableAll(int cpuInfo[4], int functionId) {
|
||||||
|
cpuInfo[0] = -1;
|
||||||
|
cpuInfo[1] = 0;
|
||||||
|
cpuInfo[2] = 0;
|
||||||
|
cpuInfo[3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mockCpuidFunctionNotAvailableDisableAll(int cpuInfo[4], int functionId) {
|
||||||
|
cpuInfo[0] = 0;
|
||||||
|
cpuInfo[1] = 0;
|
||||||
|
cpuInfo[2] = 0;
|
||||||
|
cpuInfo[3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(CpuInfoTest, giveFunctionIsNotAvailableWhenFeatureIsNotSupportedThenMaskBitIsOff) {
|
||||||
|
void (*defaultCpuidFunc)(int[4], int) = CpuInfo::cpuidFunc;
|
||||||
|
CpuInfo::cpuidFunc = mockCpuidFunctionNotAvailableDisableAll;
|
||||||
|
|
||||||
|
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::featureClflush));
|
||||||
|
|
||||||
|
CpuInfo::cpuidFunc = defaultCpuidFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(CpuInfoTest, giveFunctionIsAvailableWhenFeatureIsNotSupportedThenMaskBitIsOff) {
|
||||||
|
void (*defaultCpuidFunc)(int[4], int) = CpuInfo::cpuidFunc;
|
||||||
|
CpuInfo::cpuidFunc = mockCpuidFunctionAvailableDisableAll;
|
||||||
|
|
||||||
|
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::featureClflush));
|
||||||
|
|
||||||
|
CpuInfo::cpuidFunc = defaultCpuidFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(CpuInfoTest, whenFeatureIsSupportedThenMaskBitIsOn) {
|
||||||
|
void (*defaultCpuidFunc)(int[4], int) = CpuInfo::cpuidFunc;
|
||||||
|
CpuInfo::cpuidFunc = mockCpuidEnableAll;
|
||||||
|
|
||||||
|
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::featureClflush));
|
||||||
|
|
||||||
|
CpuInfo::cpuidFunc = defaultCpuidFunc;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(CpuInfo, cpuidex) {
|
||||||
|
const CpuInfo &cpuInfo = CpuInfo::getInstance();
|
||||||
|
|
||||||
|
uint32_t cpuRegsInfo[4];
|
||||||
|
uint32_t subleaf = 0;
|
||||||
|
cpuInfo.cpuidex(cpuRegsInfo, 4, subleaf);
|
||||||
|
}
|
|
@ -6,7 +6,18 @@
|
||||||
|
|
||||||
set(NEO_CORE_UTILITIES
|
set(NEO_CORE_UTILITIES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/cpu_info.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/spinlock.h
|
${CMAKE_CURRENT_SOURCE_DIR}/spinlock.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(NEO_CORE_UTILITIES_WINDOWS
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/windows/cpu_info.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(NEO_CORE_UTILITIES_LINUX
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/linux/cpu_info.cpp
|
||||||
|
)
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY NEO_CORE_UTILITIES ${NEO_CORE_UTILITIES})
|
set_property(GLOBAL PROPERTY NEO_CORE_UTILITIES ${NEO_CORE_UTILITIES})
|
||||||
|
set_property(GLOBAL PROPERTY NEO_CORE_UTILITIES_WINDOWS ${NEO_CORE_UTILITIES_WINDOWS})
|
||||||
|
set_property(GLOBAL PROPERTY NEO_CORE_UTILITIES_LINUX ${NEO_CORE_UTILITIES_LINUX})
|
|
@ -48,6 +48,7 @@ struct CpuInfo {
|
||||||
static const uint64_t featureAvX512Cd = 0x400000000ULL;
|
static const uint64_t featureAvX512Cd = 0x400000000ULL;
|
||||||
static const uint64_t featureSha = 0x800000000ULL;
|
static const uint64_t featureSha = 0x800000000ULL;
|
||||||
static const uint64_t featureMpx = 0x1000000000ULL;
|
static const uint64_t featureMpx = 0x1000000000ULL;
|
||||||
|
static const uint64_t featureClflush = 0x2000000000ULL;
|
||||||
|
|
||||||
CpuInfo() : features(featureNone) {
|
CpuInfo() : features(featureNone) {
|
||||||
}
|
}
|
||||||
|
@ -140,6 +141,10 @@ struct CpuInfo {
|
||||||
{
|
{
|
||||||
features |= cpuInfo[2] & BIT(30) ? featureRdrnd : featureNone;
|
features |= cpuInfo[2] & BIT(30) ? featureRdrnd : featureNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
features |= cpuInfo[3] & BIT(19) ? featureClflush : featureNone;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numFunctionIds >= 7u) {
|
if (numFunctionIds >= 7u) {
|
||||||
|
@ -186,6 +191,7 @@ struct CpuInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void (*cpuidexFunc)(int *, int, int);
|
static void (*cpuidexFunc)(int *, int, int);
|
||||||
|
static void (*cpuidFunc)(int[4], int);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
mutable uint64_t features;
|
mutable uint64_t features;
|
|
@ -5,24 +5,29 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "runtime/utilities/cpu_info.h"
|
#include "core/utilities/cpu_info.h"
|
||||||
|
|
||||||
#include <cpuid.h>
|
#include <cpuid.h>
|
||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
|
void cpuid_linux_wrapper(int cpuInfo[4], int functionId) {
|
||||||
|
__cpuid_count(functionId, 0, cpuInfo[0], cpuInfo[1], cpuInfo[2], cpuInfo[3]);
|
||||||
|
}
|
||||||
|
|
||||||
void cpuidex_linux_wrapper(int *cpuInfo, int functionId, int subfunctionId) {
|
void cpuidex_linux_wrapper(int *cpuInfo, int functionId, int subfunctionId) {
|
||||||
__cpuid_count(functionId, subfunctionId, cpuInfo[0], cpuInfo[1], cpuInfo[2], cpuInfo[3]);
|
__cpuid_count(functionId, subfunctionId, cpuInfo[0], cpuInfo[1], cpuInfo[2], cpuInfo[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void (*CpuInfo::cpuidexFunc)(int *, int, int) = cpuidex_linux_wrapper;
|
void (*CpuInfo::cpuidexFunc)(int *, int, int) = cpuidex_linux_wrapper;
|
||||||
|
void (*CpuInfo::cpuidFunc)(int[4], int) = cpuid_linux_wrapper;
|
||||||
|
|
||||||
const CpuInfo CpuInfo::instance;
|
const CpuInfo CpuInfo::instance;
|
||||||
|
|
||||||
void CpuInfo::cpuid(
|
void CpuInfo::cpuid(
|
||||||
uint32_t cpuInfo[4],
|
uint32_t cpuInfo[4],
|
||||||
uint32_t functionId) const {
|
uint32_t functionId) const {
|
||||||
__cpuid_count(functionId, 0, cpuInfo[0], cpuInfo[1], cpuInfo[2], cpuInfo[3]);
|
cpuidFunc(reinterpret_cast<int *>(cpuInfo), functionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CpuInfo::cpuidex(
|
void CpuInfo::cpuidex(
|
|
@ -5,24 +5,29 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "runtime/utilities/cpu_info.h"
|
#include "core/utilities/cpu_info.h"
|
||||||
|
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
|
|
||||||
namespace NEO {
|
namespace NEO {
|
||||||
|
|
||||||
|
void cpuid_windows_wrapper(int cpuInfo[4], int functionId) {
|
||||||
|
__cpuid(cpuInfo, functionId);
|
||||||
|
}
|
||||||
|
|
||||||
void cpuidex_windows_wrapper(int *cpuInfo, int functionId, int subfunctionId) {
|
void cpuidex_windows_wrapper(int *cpuInfo, int functionId, int subfunctionId) {
|
||||||
__cpuidex(cpuInfo, functionId, subfunctionId);
|
__cpuidex(cpuInfo, functionId, subfunctionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void (*CpuInfo::cpuidexFunc)(int *, int, int) = cpuidex_windows_wrapper;
|
void (*CpuInfo::cpuidexFunc)(int *, int, int) = cpuidex_windows_wrapper;
|
||||||
|
void (*CpuInfo::cpuidFunc)(int[4], int) = cpuid_windows_wrapper;
|
||||||
|
|
||||||
const CpuInfo CpuInfo::instance;
|
const CpuInfo CpuInfo::instance;
|
||||||
|
|
||||||
void CpuInfo::cpuid(
|
void CpuInfo::cpuid(
|
||||||
uint32_t cpuInfo[4],
|
uint32_t cpuInfo[4],
|
||||||
uint32_t functionId) const {
|
uint32_t functionId) const {
|
||||||
__cpuid(reinterpret_cast<int *>(cpuInfo), functionId);
|
cpuidFunc(reinterpret_cast<int *>(cpuInfo), functionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CpuInfo::cpuidex(
|
void CpuInfo::cpuidex(
|
|
@ -7,8 +7,8 @@
|
||||||
|
|
||||||
#include "runtime/command_queue/local_id_gen.h"
|
#include "runtime/command_queue/local_id_gen.h"
|
||||||
|
|
||||||
|
#include "core/utilities/cpu_info.h"
|
||||||
#include "runtime/helpers/aligned_memory.h"
|
#include "runtime/helpers/aligned_memory.h"
|
||||||
#include "runtime/utilities/cpu_info.h"
|
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include "runtime/os_interface/hw_info_config.h"
|
#include "runtime/os_interface/hw_info_config.h"
|
||||||
|
|
||||||
|
#include "core/utilities/cpu_info.h"
|
||||||
#include "runtime/command_stream/preemption.h"
|
#include "runtime/command_stream/preemption.h"
|
||||||
#include "runtime/gen_common/hw_cmds.h"
|
#include "runtime/gen_common/hw_cmds.h"
|
||||||
#include "runtime/helpers/hw_helper.h"
|
#include "runtime/helpers/hw_helper.h"
|
||||||
|
@ -15,7 +16,6 @@
|
||||||
#include "runtime/os_interface/debug_settings_manager.h"
|
#include "runtime/os_interface/debug_settings_manager.h"
|
||||||
#include "runtime/os_interface/linux/drm_neo.h"
|
#include "runtime/os_interface/linux/drm_neo.h"
|
||||||
#include "runtime/os_interface/linux/os_interface.h"
|
#include "runtime/os_interface/linux/os_interface.h"
|
||||||
#include "runtime/utilities/cpu_info.h"
|
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ set(RUNTIME_SRCS_UTILITIES_BASE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/api_intercept.h
|
${CMAKE_CURRENT_SOURCE_DIR}/api_intercept.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/arrayref.h
|
${CMAKE_CURRENT_SOURCE_DIR}/arrayref.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cpu_info.h
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/debug_file_reader.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/debug_file_reader.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/debug_file_reader.h
|
${CMAKE_CURRENT_SOURCE_DIR}/debug_file_reader.h
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/debug_settings_reader_creator.h
|
${CMAKE_CURRENT_SOURCE_DIR}/debug_settings_reader_creator.h
|
||||||
|
@ -35,15 +34,19 @@ list(APPEND RUNTIME_SRCS_UTILITIES_BASE ${NEO_CORE_UTILITIES})
|
||||||
set(RUNTIME_SRCS_UTILITIES_WINDOWS
|
set(RUNTIME_SRCS_UTILITIES_WINDOWS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/directory.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/windows/directory.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/timer_util.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/windows/timer_util.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/cpu_info.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
get_property(NEO_CORE_UTILITIES_WINDOWS GLOBAL PROPERTY NEO_CORE_UTILITIES_WINDOWS)
|
||||||
|
list(APPEND RUNTIME_SRCS_UTILITIES_WINDOWS ${NEO_CORE_UTILITIES_WINDOWS})
|
||||||
|
|
||||||
set(RUNTIME_SRCS_UTILITIES_LINUX
|
set(RUNTIME_SRCS_UTILITIES_LINUX
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/linux/directory.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/linux/directory.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/linux/timer_util.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/linux/timer_util.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/linux/cpu_info.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
get_property(NEO_CORE_UTILITIES_LINUX GLOBAL PROPERTY NEO_CORE_UTILITIES_LINUX)
|
||||||
|
list(APPEND RUNTIME_SRCS_UTILITIES_LINUX ${NEO_CORE_UTILITIES_LINUX})
|
||||||
|
|
||||||
target_sources(${NEO_STATIC_LIB_NAME} PRIVATE ${RUNTIME_SRCS_UTILITIES_BASE})
|
target_sources(${NEO_STATIC_LIB_NAME} PRIVATE ${RUNTIME_SRCS_UTILITIES_BASE})
|
||||||
set_property(GLOBAL PROPERTY RUNTIME_SRCS_UTILITIES_BASE ${RUNTIME_SRCS_UTILITIES_BASE})
|
set_property(GLOBAL PROPERTY RUNTIME_SRCS_UTILITIES_BASE ${RUNTIME_SRCS_UTILITIES_BASE})
|
||||||
set_property(GLOBAL PROPERTY RUNTIME_SRCS_UTILITIES_LINUX ${RUNTIME_SRCS_UTILITIES_LINUX})
|
set_property(GLOBAL PROPERTY RUNTIME_SRCS_UTILITIES_LINUX ${RUNTIME_SRCS_UTILITIES_LINUX})
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "core/utilities/cpu_info.h"
|
||||||
#include "runtime/os_interface/hw_info_config.h"
|
#include "runtime/os_interface/hw_info_config.h"
|
||||||
#include "runtime/os_interface/os_interface.h"
|
#include "runtime/os_interface/os_interface.h"
|
||||||
#include "runtime/utilities/cpu_info.h"
|
|
||||||
#include "unit_tests/os_interface/hw_info_config_tests.h"
|
#include "unit_tests/os_interface/hw_info_config_tests.h"
|
||||||
#include "unit_tests/os_interface/linux/drm_mock.h"
|
#include "unit_tests/os_interface/linux/drm_mock.h"
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ set(IGDRCL_SRCS_tests_utilities
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/containers_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/containers_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/containers_tests_helpers
|
${CMAKE_CURRENT_SOURCE_DIR}/containers_tests_helpers
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cpuinfo_tests.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/debug_file_reader_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/debug_file_reader_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/debug_file_reader_tests.inl
|
${CMAKE_CURRENT_SOURCE_DIR}/debug_file_reader_tests.inl
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/debug_settings_reader_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/debug_settings_reader_tests.cpp
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2017-2019 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "runtime/utilities/cpu_info.h"
|
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
|
||||||
|
|
||||||
using namespace NEO;
|
|
||||||
|
|
||||||
TEST(CpuInfo, detectsSSE4) {
|
|
||||||
const CpuInfo &cpuInfo = CpuInfo::getInstance();
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureFpu));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureCmov));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureMmx));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureFxsave));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureSse));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureSsE2));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureSsE3));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureSssE3));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureSsE41));
|
|
||||||
EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::featureSsE42));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_MOVBE));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_POPCNT));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_PCLMULQDQ));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_AES));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_F16C));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_AVX));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_RDRND));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_FMA));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_BMI));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_LZCNT));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_HLE));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_RTM));
|
|
||||||
//EXPECT_TRUE(cpuInfo.isFeatureSupported(CpuInfo::_FEATURE_AVX2));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(CpuInfo, cpuidex) {
|
|
||||||
const CpuInfo &cpuInfo = CpuInfo::getInstance();
|
|
||||||
|
|
||||||
uint32_t cpuRegsInfo[4];
|
|
||||||
uint32_t subleaf = 0;
|
|
||||||
cpuInfo.cpuidex(cpuRegsInfo, 4, subleaf);
|
|
||||||
}
|
|
Loading…
Reference in New Issue