diff --git a/FEXCore/Source/Interface/Config/Config.json.in b/FEXCore/Source/Interface/Config/Config.json.in index 9ffa6ff3a..49a25bcc4 100644 --- a/FEXCore/Source/Interface/Config/Config.json.in +++ b/FEXCore/Source/Interface/Config/Config.json.in @@ -76,6 +76,8 @@ "DISABLECRYPTO": "disablecrypto", "ENABLERPRES": "enablerpres", "DISABLERPRES": "disablerpres", + "ENABLESVEBITPERM": "enablesvebitperm", + "DISABLESVEBITPERM": "disablesvebitperm", "ENABLEPRESERVEALLABI": "enablepreserveallabi", "DISABLEPRESERVEALLABI": "disablepreserveallabi" }, @@ -97,6 +99,7 @@ "\t{enable,disable}flagm2: Will force enable or disable flagm2 even if the host doesn't support it", "\t{enable,disable}crypto: Will force enable or disable crypto extensions even if the host doesn't support it", "\t{enable,disable}rpres: Will force enable or disable rpres even if the host doesn't support it", + "\t{enable,disable}svebitperm: Will force enable or disable svebitperm even if the host doesn't support it", "\t{enable,disable}preserveallabi: Will force enable or disable preserve_all abi even if the host doesn't support it" ] }, diff --git a/FEXCore/Source/Interface/Core/HostFeatures.cpp b/FEXCore/Source/Interface/Core/HostFeatures.cpp index 04afa976d..99ec8f437 100644 --- a/FEXCore/Source/Interface/Core/HostFeatures.cpp +++ b/FEXCore/Source/Interface/Core/HostFeatures.cpp @@ -95,6 +95,7 @@ static void OverrideFeatures(HostFeatures* Features, uint64_t ForceSVEWidth) { ENABLE_DISABLE_OPTION(SupportsFlagM, FlagM, FLAGM); ENABLE_DISABLE_OPTION(SupportsFlagM2, FlagM2, FLAGM2); ENABLE_DISABLE_OPTION(SupportsRPRES, RPRES, RPRES); + ENABLE_DISABLE_OPTION(SupportsSVEBitPerm, SVEBITPERM, SVEBITPERM); ENABLE_DISABLE_OPTION(SupportsPreserveAllABI, PRESERVEALLABI, PRESERVEALLABI); GET_SINGLE_OPTION(Crypto, CRYPTO); @@ -152,6 +153,7 @@ HostFeatures::HostFeatures() { SupportsFlagM = Features.Has(vixl::CPUFeatures::Feature::kFlagM); SupportsFlagM2 = Features.Has(vixl::CPUFeatures::Feature::kAXFlag); SupportsRPRES = Features.Has(vixl::CPUFeatures::Feature::kRPRES); + SupportsSVEBitPerm = Features.Has(vixl::CPUFeatures::Feature::kSVEBitPerm); Supports3DNow = true; SupportsSSE4A = true; diff --git a/FEXCore/include/FEXCore/Core/HostFeatures.h b/FEXCore/include/FEXCore/Core/HostFeatures.h index d99f120c8..7a6e5d648 100644 --- a/FEXCore/include/FEXCore/Core/HostFeatures.h +++ b/FEXCore/include/FEXCore/Core/HostFeatures.h @@ -39,6 +39,7 @@ public: bool SupportsRPRES {}; bool SupportsPreserveAllABI {}; bool SupportsAES256 {}; + bool SupportsSVEBitPerm {}; // Float exception behaviour bool SupportsAFP {};