mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-11-07 09:16:08 -10:00
Merge pull request #6094 from Sonicadvance1/302
Feature flag fixes and alignment between targets
This commit is contained in:
4 files changed
+42
-40
No files matched your search
+3
-1
@@ -254,7 +254,9 @@ check_cxx_source_compiles(
|
||||
HAS_CLANG_PRESERVE_ALL)
|
||||
unset(CMAKE_REQUIRED_FLAGS)
|
||||
if (HAS_CLANG_PRESERVE_ALL)
|
||||
if (MINGW)
|
||||
message(STATUS "Clang version ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
set(CLANG_MINIMUM_VERSION 22.1)
|
||||
if (MINGW AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${CLANG_MINIMUM_VERSION})
|
||||
message(STATUS "Ignoring broken clang::preserve_all support")
|
||||
set(HAS_CLANG_PRESERVE_ALL FALSE)
|
||||
else()
|
||||
|
||||
@@ -67,44 +67,44 @@ struct HostFeatures {
|
||||
}
|
||||
|
||||
// Affects codegen and is basically machine description.
|
||||
uint32_t DCacheLineLog2 : 4 {};
|
||||
uint32_t SupportsCacheMaintenanceOps : 1 {};
|
||||
uint32_t SupportsAES : 1 {};
|
||||
uint32_t SupportsCRC : 1 {};
|
||||
uint32_t SupportsCLZERO : 1 {};
|
||||
uint32_t SupportsAtomics : 1 {};
|
||||
uint32_t SupportsRCPC : 1 {};
|
||||
uint32_t SupportsTSOImm9 : 1 {};
|
||||
uint32_t SupportsRAND : 1 {};
|
||||
uint32_t SupportsAVX : 1 {};
|
||||
uint32_t SupportsSVE128 : 1 {};
|
||||
uint32_t SupportsSVE256 : 1 {};
|
||||
uint32_t SupportsSHA : 1 {};
|
||||
uint32_t SupportsPMULL_128Bit : 1 {};
|
||||
uint32_t SupportsCSSC : 1 {};
|
||||
uint32_t SupportsFCMA : 1 {};
|
||||
uint32_t SupportsFlagM : 1 {};
|
||||
uint32_t SupportsFlagM2 : 1 {};
|
||||
uint32_t SupportsRPRES : 1 {};
|
||||
uint32_t SupportsPreserveAllABI : 1 {};
|
||||
uint32_t SupportsAES256 : 1 {};
|
||||
uint32_t SupportsSVEBitPerm : 1 {};
|
||||
uint32_t SupportsCPUIndexInTPIDRRO : 1 {};
|
||||
uint32_t SupportsFRINTTS : 1 {};
|
||||
uint32_t SupportsECV : 1 {};
|
||||
uint32_t SupportsWFXT : 1 {};
|
||||
uint32_t Supports3DNow : 1 {};
|
||||
uint32_t SupportsSSE4a : 1 {};
|
||||
uint32_t SupportsMOPS : 1 {};
|
||||
uint32_t SupportsI8MM : 1 {};
|
||||
uint32_t SupportsDotProd : 1 {};
|
||||
uint32_t PreferZVAForVZero : 1 {};
|
||||
uint32_t SupportsAFP : 1 {};
|
||||
uint32_t SupportsFloatExceptions : 1 {};
|
||||
uint32_t SupportsBF16 : 1 {};
|
||||
uint32_t DCacheLineLog2 : 4 {}; // [3:0]
|
||||
uint32_t SupportsCacheMaintenanceOps : 1 {}; // [4]
|
||||
uint32_t SupportsAES : 1 {}; // [5]
|
||||
uint32_t SupportsCRC : 1 {}; // [6]
|
||||
uint32_t SupportsCLZERO : 1 {}; // [7]
|
||||
uint32_t SupportsAtomics : 1 {}; // [8]
|
||||
uint32_t SupportsRCPC : 1 {}; // [9]
|
||||
uint32_t SupportsTSOImm9 : 1 {}; // [10]
|
||||
uint32_t SupportsRAND : 1 {}; // [11]
|
||||
uint32_t SupportsAVX : 1 {}; // [12] // Not enabled on wine?
|
||||
uint32_t SupportsSVE128 : 1 {}; // [13]
|
||||
uint32_t SupportsSVE256 : 1 {}; // [14]
|
||||
uint32_t SupportsSHA : 1 {}; // [15]
|
||||
uint32_t SupportsPMULL_128Bit : 1 {}; // [16]
|
||||
uint32_t SupportsCSSC : 1 {}; // [17]
|
||||
uint32_t SupportsFCMA : 1 {}; // [18]
|
||||
uint32_t SupportsFlagM : 1 {}; // [19]
|
||||
uint32_t SupportsFlagM2 : 1 {}; // [20]
|
||||
uint32_t SupportsRPRES : 1 {}; // [21]
|
||||
uint32_t SupportsPreserveAllABI : 1 {}; // [22] // Not enabled on wine
|
||||
uint32_t SupportsAES256 : 1 {}; // [23]
|
||||
uint32_t SupportsSVEBitPerm : 1 {}; // [24]
|
||||
uint32_t SupportsCPUIndexInTPIDRRO : 1 {}; // [25]
|
||||
uint32_t SupportsFRINTTS : 1 {}; // [26]
|
||||
uint32_t SupportsECV : 1 {}; // [27]
|
||||
uint32_t SupportsWFXT : 1 {}; // [28]
|
||||
uint32_t Supports3DNow : 1 {}; // [29]
|
||||
uint32_t SupportsSSE4a : 1 {}; // [30]
|
||||
uint32_t SupportsMOPS : 1 {}; // [31]
|
||||
uint32_t SupportsI8MM : 1 {}; // [32]
|
||||
uint32_t SupportsDotProd : 1 {}; // [33]
|
||||
uint32_t PreferZVAForVZero : 1 {}; // [34]
|
||||
uint32_t SupportsAFP : 1 {}; // [35]
|
||||
uint32_t SupportsFloatExceptions : 1 {}; // [36]
|
||||
uint32_t SupportsBF16 : 1 {}; // [37]
|
||||
// Flag if this is InstCountCI
|
||||
uint32_t IsInstCountCI : 1 {};
|
||||
uint32_t pad : 25 {};
|
||||
uint32_t IsInstCountCI : 1 {}; // [38]
|
||||
uint32_t pad : 25 {}; // [63:39]
|
||||
|
||||
// This affects codegen, but it isn't machine state
|
||||
ProcessFeaturesHash ProcessFeatures {};
|
||||
|
||||
@@ -789,7 +789,7 @@ NTSTATUS ProcessInit() {
|
||||
|
||||
{
|
||||
auto HostFeatures =
|
||||
FEX::Windows::CPUFeatures::FetchHostFeatures(IsWine, FEXCore::HostFeatures::HostTypeEnum::Wow64, FEX::Windows::UnixLib::GetPID());
|
||||
FEX::Windows::CPUFeatures::FetchHostFeatures(IsWine, FEXCore::HostFeatures::HostTypeEnum::Arm64ec, FEX::Windows::UnixLib::GetPID());
|
||||
CTX = FEXCore::Context::Context::CreateNewContext(HostFeatures);
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ FEXCore::HostFeatures CPUFeatures::FetchHostFeatures(bool IsWine, FEXCore::HostF
|
||||
RegCloseKey(Key);
|
||||
}
|
||||
|
||||
FEX::FetchHostFeatures(Features, HostFeatures, !IsWine, CTR, MIDR);
|
||||
FEX::FetchHostFeatures(Features, HostFeatures, IsWine, CTR, MIDR);
|
||||
|
||||
// Force-disable SVE until wine/windows gain support for SVE context save/restore
|
||||
HostFeatures.SupportsSVE128 = false;
|
||||
|
||||
Reference in new issue
Block a user