Merge pull request #6094 from Sonicadvance1/302

Feature flag fixes and alignment between targets
This commit is contained in:
LC authored and GitHub committed 2026-11-03 13:29:51 -05:00
commit effbda64ca
4 files changed
+42 -40

No files matched your search

+3 -1
View File
@@ -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()
+37 -37
View File
@@ -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 {};
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -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;