unittests: Add specific paths for MOPS

This commit is contained in:
Lioncache committed 2026-03-19 11:55:02 -04:00
1 parent 85c1ecd035
commit e862f8f86c
5 files changed
+1347 -50

No files matched your search

+2
View File
@@ -59,6 +59,7 @@ class HostFeatures(Flag) :
FEATURE_LRCPC = (1 << 14)
FEATURE_LRCPC2 = (1 << 15)
FEATURE_FRINTTS = (1 << 16)
FEATURE_MOPS = (1 << 17)
HostFeaturesLookup = {
"SVE128" : HostFeatures.FEATURE_SVE128,
@@ -78,6 +79,7 @@ HostFeaturesLookup = {
"LRCPC" : HostFeatures.FEATURE_LRCPC,
"LRCPC2" : HostFeatures.FEATURE_LRCPC2,
"FRINTTS" : HostFeatures.FEATURE_FRINTTS,
"MOPS" : HostFeatures.FEATURE_MOPS,
}
def GetHostFeatures(data):
+7
View File
@@ -519,6 +519,7 @@ int main(int argc, char** argv, char** const envp) {
FEATURE_LRCPC = (1U << 14),
FEATURE_LRCPC2 = (1U << 15),
FEATURE_FRINTTS = (1U << 16),
FEATURE_MOPS = (1U << 17),
};
uint64_t SVEWidth = 0;
@@ -569,6 +570,9 @@ int main(int argc, char** argv, char** const envp) {
if (TestHeaderData->EnabledHostFeatures & FEATURE_FRINTTS) {
HostFeatureControl |= static_cast<uint64_t>(FEXCore::Config::HostFeatures::ENABLEFRINTTS);
}
if (TestHeaderData->EnabledHostFeatures & FEATURE_MOPS) {
HostFeatureControl |= static_cast<uint64_t>(FEXCore::Config::HostFeatures::ENABLEMOPS);
}
if (TestHeaderData->EnabledHostFeatures & FEATURE_TSO) {
FEXCore::Config::Set(FEXCore::Config::ConfigOption::CONFIG_TSOENABLED, "1");
@@ -624,6 +628,9 @@ int main(int argc, char** argv, char** const envp) {
if (TestHeaderData->DisabledHostFeatures & FEATURE_FRINTTS) {
HostFeatureControl |= static_cast<uint64_t>(FEXCore::Config::HostFeatures::DISABLEFRINTTS);
}
if (TestHeaderData->DisabledHostFeatures & FEATURE_MOPS) {
HostFeatureControl |= static_cast<uint64_t>(FEXCore::Config::HostFeatures::DISABLEMOPS);
}
if (TestHeaderData->DisabledHostFeatures & FEATURE_TSO) {
FEXCore::Config::Set(FEXCore::Config::ConfigOption::CONFIG_TSOENABLED, "0");
@@ -4,7 +4,8 @@
"EnabledHostFeatures": [
"FLAGM",
"FLAGM2",
"FRINTTS"
"FRINTTS",
"MOPS"
],
"DisabledHostFeatures": [
"SVE128",
@@ -834,7 +835,7 @@
},
"positive rep stosb": {
"x86InstructionCount": 2,
"ExpectedInstructionCount": 29,
"ExpectedInstructionCount": 13,
"Comment": [
"When direction flag is a compile time constant we can optimize",
"loads and stores can turn in to post-increment when known"
@@ -848,28 +849,12 @@
"uxtb w21, w4",
"mov x0, x7",
"mov x1, x11",
"cbz x0, #+0x58",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x3c",
"dup v1.16b, w21",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #32",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x40 (64)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x40 (64)",
"cbz x0, #+0x2c",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x10",
"strb w21, [x1], #1",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"cbz x0, #+0x1c",
"mrs x2, nzcv",
"setp [x1]!, x0!, x21",
"setm [x1]!, x0!, x21",
"sete [x1]!, x0!, x21",
"msr nzcv, x2",
"add x11, x11, x7",
"mov w7, #0x0",
"strb w20, [x28, #1018]"
@@ -1005,7 +990,7 @@
},
"negative rep stosb": {
"x86InstructionCount": 2,
"ExpectedInstructionCount": 31,
"ExpectedInstructionCount": 15,
"Comment": [
"When direction flag is a compile time constant we can optimize",
"loads and stores can turn in to post-increment when known"
@@ -1019,30 +1004,14 @@
"uxtb w21, w4",
"mov x0, x7",
"mov x1, x11",
"cbz x0, #+0x60",
"sub x1, x1, #0x1f (31)",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x3c",
"dup v1.16b, w21",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #-32",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x40 (64)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x40 (64)",
"cbz x0, #+0x30",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x14",
"add x1, x1, #0x1f (31)",
"strb w21, [x1], #-1",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"cbz x0, #+0x24",
"sub x1, x1, x0",
"add x1, x1, #0x1 (1)",
"mrs x2, nzcv",
"setp [x1]!, x0!, x21",
"setm [x1]!, x0!, x21",
"sete [x1]!, x0!, x21",
"msr nzcv, x2",
"sub x11, x11, x7",
"mov w7, #0x0",
"strb w20, [x28, #1018]"
File diff suppressed because it is too large. Load diff
+2 -1
View File
@@ -7,7 +7,8 @@
"SVE256",
"AFP",
"FLAGM",
"FLAGM2"
"FLAGM2",
"MOPS"
]
},
"Instructions": {