mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 10:00:16 +02:00
unittests: Add specific paths for MOPS
This commit is contained in:
1 parent
85c1ecd035
commit
e862f8f86c
5 files changed
+1347
-50
No files matched your search
@@ -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):
|
||||
|
||||
@@ -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
@@ -7,7 +7,8 @@
|
||||
"SVE256",
|
||||
"AFP",
|
||||
"FLAGM",
|
||||
"FLAGM2"
|
||||
"FLAGM2",
|
||||
"MOPS"
|
||||
]
|
||||
},
|
||||
"Instructions": {
|
||||
|
||||
Reference in new issue
Block a user