mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 13:00:15 +02:00
332 lines
8.0 KiB
JSON
332 lines
8.0 KiB
JSON
{
|
|
"Features": {
|
|
"Bitness": 32,
|
|
"EnabledHostFeatures": [],
|
|
"DisabledHostFeatures": [
|
|
"SVE128",
|
|
"SVE256",
|
|
"RPRES",
|
|
"AFP"
|
|
],
|
|
"BinaryCacheVersion": 14
|
|
},
|
|
"Comment": [
|
|
"Instructions that explicitly push against the limits of ARM's loadstore instructions"
|
|
],
|
|
"Instructions": {
|
|
"movzx eax, byte [ecx - 257]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xfffffffffffffeff",
|
|
"ldrb w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movzx eax, byte [ecx - 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldurb w4, [x7, #-256]"
|
|
]
|
|
},
|
|
"movzx eax, byte [ecx + 255]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldrb w4, [x7, #255]"
|
|
]
|
|
},
|
|
"movzx eax, byte [ecx + 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldrb w4, [x7, #256]"
|
|
]
|
|
},
|
|
"movzx eax, byte [ecx + 4095]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldrb w4, [x7, #4095]"
|
|
]
|
|
},
|
|
"movzx eax, byte [ecx + 4096]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1000",
|
|
"ldrb w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx - 257]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xfffffffffffffeff",
|
|
"ldrh w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx - 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldurh w4, [x7, #-256]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx + 255]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldurh w4, [x7, #255]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx + 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldrh w4, [x7, #256]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx + 8190]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldrh w4, [x7, #8190]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx + 8191]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1fff",
|
|
"ldrh w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movzx eax, word [ecx + 8192]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x2000",
|
|
"ldrh w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx - 257]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xfffffffffffffeff",
|
|
"ldr w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx - 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur w4, [x7, #-256]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 255]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur w4, [x7, #255]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldr w4, [x7, #256]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 16380]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldr w4, [x7, #16380]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 16381]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x3ffd",
|
|
"ldr w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 16382]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x3ffe",
|
|
"ldr w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 16383]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x3fff",
|
|
"ldr w4, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"mov eax, dword [ecx + 16384]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"add w20, w7, #0x4000 (16384)",
|
|
"ldr w4, [x20]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx + 16379]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x3ffb",
|
|
"ldr s16, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx + 16380]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldr s16, [x7, #16380]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx + 16381]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x3ffd",
|
|
"ldr s16, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx - 257]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xfffffffffffffeff",
|
|
"ldr s16, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx - 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur s16, [x7, #-256]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx + 255]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur s16, [x7, #255]"
|
|
]
|
|
},
|
|
"movss xmm0, [ecx + 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldr s16, [x7, #256]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx + 32759]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x7ff7",
|
|
"add w20, w7, w20",
|
|
"ldr d16, [x20]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx + 32760]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x7ff8",
|
|
"add w20, w7, w20",
|
|
"ldr d16, [x20]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx + 32761]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x7ff9",
|
|
"add w20, w7, w20",
|
|
"ldr d16, [x20]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx - 257]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xfffffffffffffeff",
|
|
"ldr d16, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx - 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur d16, [x7, #-256]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx + 255]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur d16, [x7, #255]"
|
|
]
|
|
},
|
|
"movsd xmm0, [ecx + 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldr d16, [x7, #256]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx + 65519]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffef",
|
|
"add w20, w7, w20",
|
|
"ldr d16, [x20]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx + 65520]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xfff0",
|
|
"add w20, w7, w20",
|
|
"ldr d16, [x20]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx + 65521]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xfff1",
|
|
"add w20, w7, w20",
|
|
"ldr d16, [x20]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx - 257]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xfffffffffffffeff",
|
|
"ldr d16, [x7, x20, sxtx]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx - 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur d16, [x7, #-256]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx + 255]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldur d16, [x7, #255]"
|
|
]
|
|
},
|
|
"movq xmm0, [ecx + 256]": {
|
|
"ExpectedInstructionCount": 1,
|
|
"ExpectedArm64ASM": [
|
|
"ldr d16, [x7, #256]"
|
|
]
|
|
},
|
|
"mov ebx, fs:0x14": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"ldr w20, [x28, #1000]",
|
|
"ldr w6, [x20, #20]"
|
|
]
|
|
},
|
|
"mov ebx, gs:0x14": {
|
|
"ExpectedInstructionCount": 2,
|
|
"ExpectedArm64ASM": [
|
|
"ldr w20, [x28, #992]",
|
|
"ldr w6, [x20, #20]"
|
|
]
|
|
},
|
|
"Multiple segment registers": {
|
|
"x86Insts": [
|
|
"mov eax, gs:0x100",
|
|
"mov ebx, gs:0x14"
|
|
],
|
|
"x86InstructionCount": 2,
|
|
"ExpectedInstructionCount": 4,
|
|
"ExpectedArm64ASM": [
|
|
"ldr w20, [x28, #992]",
|
|
"ldr w4, [x20, #256]",
|
|
"ldr w20, [x28, #992]",
|
|
"ldr w6, [x20, #20]"
|
|
]
|
|
}
|
|
}
|
|
}
|