From 660e0468f1c2764e063e0ad538c8a44503bb37db Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Fri, 23 Oct 2026 09:43:12 -0700 Subject: [PATCH] TestHarnessHelper: Adds support for the new CPU features --- Scripts/json_config_parse.py | 8 +++++++ Source/Tools/CommonTools/HarnessHelpers.h | 28 +++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Scripts/json_config_parse.py b/Scripts/json_config_parse.py index 26fa95ac6..1104dbc26 100644 --- a/Scripts/json_config_parse.py +++ b/Scripts/json_config_parse.py @@ -90,6 +90,10 @@ class HostFeatures(Flag) : FEATURE_AVX_VNNI = (1 << 24) FEATURE_SERIALIZE = (1 << 25) FEATURE_AVX_NE_CONVERT = (1 << 26) + FEATURE_AVX_VNNI_INT8 = (1 << 27) + FEATURE_AVX_VNNI_INT16 = (1 << 28) + FEATURE_AVX_IFMA = (1 << 29) + FEATURE_SHA512 = (1 << 30) RegStringLookup = { "NONE": Regs.REG_NONE, @@ -179,6 +183,10 @@ HostFeaturesLookup = { "AVX_VNNI" : HostFeatures.FEATURE_AVX_VNNI, "SERIALIZE" : HostFeatures.FEATURE_SERIALIZE, "AVX_NE_CONVERT" : HostFeatures.FEATURE_AVX_NE_CONVERT, + "AVX_VNNI_INT8" : HostFeatures.FEATURE_AVX_VNNI_INT8, + "AVX_VNNI_INT16" : HostFeatures.FEATURE_AVX_VNNI_INT16, + "AVX_IFMA" : HostFeatures.FEATURE_AVX_IFMA, + "SHA512" : HostFeatures.FEATURE_SHA512, } def parse_hexstring(s): diff --git a/Source/Tools/CommonTools/HarnessHelpers.h b/Source/Tools/CommonTools/HarnessHelpers.h index 544eebb2d..233551f4b 100644 --- a/Source/Tools/CommonTools/HarnessHelpers.h +++ b/Source/Tools/CommonTools/HarnessHelpers.h @@ -324,6 +324,10 @@ public: FEATURE_AVX_VNNI = (1 << 24), FEATURE_SERIALIZE = (1 << 25), FEATURE_AVX_NE_CONVERT = (1 << 26), + FEATURE_AVX_VNNI_INT8 = (1 << 27), + FEATURE_AVX_VNNI_INT16 = (1 << 28), + FEATURE_AVX_IFMA = (1 << 29), + FEATURE_SHA512 = (1 << 30), }; bool Requires3DNow() const { @@ -407,6 +411,18 @@ public: bool RequiresAVXNEConvert() const { return BaseConfig.OptionHostFeatures & HostFeatures::FEATURE_AVX_NE_CONVERT; } + bool RequiresAVXVNNIINT8() const { + return BaseConfig.OptionHostFeatures & HostFeatures::FEATURE_AVX_VNNI_INT8; + } + bool RequiresAVXVNNIINT16() const { + return BaseConfig.OptionHostFeatures & HostFeatures::FEATURE_AVX_VNNI_INT16; + } + bool RequiresAVXIFMA() const { + return BaseConfig.OptionHostFeatures & HostFeatures::FEATURE_AVX_IFMA; + } + bool RequiresSHA512() const { + return BaseConfig.OptionHostFeatures & HostFeatures::FEATURE_SHA512; + } private: FEX_CONFIG_OPT(ConfigDumpGPRs, DUMPGPRS); @@ -623,6 +639,18 @@ public: bool RequiresAVXNEConvert() const { return Config.RequiresAVXNEConvert(); } + bool RequiresAVXVNNIINT8() const { + return Config.RequiresAVXVNNIINT8(); + } + bool RequiresAVXVNNIINT16() const { + return Config.RequiresAVXVNNIINT16(); + } + bool RequiresAVXIFMA() const { + return Config.RequiresAVXIFMA(); + } + bool RequiresSHA512() const { + return Config.RequiresSHA512(); + } private: constexpr static uint64_t STACK_OFFSET = 0xc000'0000;