{ "Features": { "Bitness": 64, "EnabledHostFeatures": [], "DisabledHostFeatures": [ "SVE128", "SVE256", "RPRES", "AFP" ], "BinaryCacheVersion": 28 }, "Comment": [ "Instructions that explicitly push against the limits of ARM's loadstore instructions" ], "Instructions": { "movzx rax, byte [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldrb w4, [x20]" ] }, "movzx rax, byte [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldrb w4, [x20]" ] }, "movzx rax, byte [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldrb w4, [x20]" ] }, "movzx rax, byte [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldrb w4, [x20]" ] }, "movzx rax, byte [ecx + 4095]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xfff (4095)", "mov w20, w20", "ldrb w4, [x20]" ] }, "movzx rax, byte [ecx + 4096]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x1000 (4096)", "mov w20, w20", "ldrb w4, [x20]" ] }, "movzx rax, word [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldrh w4, [x20]" ] }, "movzx rax, word [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldrh w4, [x20]" ] }, "movzx rax, word [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldrh w4, [x20]" ] }, "movzx rax, word [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldrh w4, [x20]" ] }, "movzx rax, word [ecx + 8190]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x1ffe", "add x20, x7, x20", "mov w20, w20", "ldrh w4, [x20]" ] }, "movzx rax, word [ecx + 8191]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x1fff", "add x20, x7, x20", "mov w20, w20", "ldrh w4, [x20]" ] }, "movzx rax, word [ecx + 8192]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x2000 (8192)", "mov w20, w20", "ldrh w4, [x20]" ] }, "mov eax, dword [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 16380]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3ffc", "add x20, x7, x20", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 16381]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3ffd", "add x20, x7, x20", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 16382]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3ffe", "add x20, x7, x20", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 16383]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3fff", "add x20, x7, x20", "mov w20, w20", "ldr w4, [x20]" ] }, "mov eax, dword [ecx + 16384]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x4000 (16384)", "mov w20, w20", "ldr w4, [x20]" ] }, "mov rax, qword [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32760]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ff8", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32761]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ff9", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32762]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ffa", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32763]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ffb", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32764]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ffc", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32765]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ffd", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32766]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ffe", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32767]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7fff", "add x20, x7, x20", "mov w20, w20", "ldr x4, [x20]" ] }, "mov rax, qword [ecx + 32768]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x8000 (32768)", "mov w20, w20", "ldr x4, [x20]" ] }, "movzx rax, byte [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldrb w4, [x7, x20, sxtx]" ] }, "movzx rax, byte [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldurb w4, [x7, #-256]" ] }, "movzx rax, byte [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrb w4, [x7, #255]" ] }, "movzx rax, byte [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrb w4, [x7, #256]" ] }, "movzx rax, byte [rcx + 4095]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrb w4, [x7, #4095]" ] }, "movzx rax, byte [rcx + 4096]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x1000", "ldrb w4, [x7, x20, sxtx]" ] }, "movzx rax, word [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldrh w4, [x7, x20, sxtx]" ] }, "movzx rax, word [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldurh w4, [x7, #-256]" ] }, "movzx rax, word [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldurh w4, [x7, #255]" ] }, "movzx rax, word [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrh w4, [x7, #256]" ] }, "movzx rax, word [rcx + 8190]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrh w4, [x7, #8190]" ] }, "movzx rax, word [rcx + 8191]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x1fff", "ldrh w4, [x7, x20, sxtx]" ] }, "movzx rax, word [rcx + 8192]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x2000", "ldrh w4, [x7, x20, sxtx]" ] }, "mov eax, dword [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldr w4, [x7, x20, sxtx]" ] }, "mov eax, dword [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur w4, [x7, #-256]" ] }, "mov eax, dword [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur w4, [x7, #255]" ] }, "mov eax, dword [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr w4, [x7, #256]" ] }, "mov eax, dword [rcx + 16380]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr w4, [x7, #16380]" ] }, "mov eax, dword [rcx + 16381]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x3ffd", "ldr w4, [x7, x20, sxtx]" ] }, "mov eax, dword [rcx + 16382]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x3ffe", "ldr w4, [x7, x20, sxtx]" ] }, "mov eax, dword [rcx + 16383]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x3fff", "ldr w4, [x7, x20, sxtx]" ] }, "mov eax, dword [rcx + 16384]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x4000", "ldr w4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur x4, [x7, #-256]" ] }, "mov rax, qword [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur x4, [x7, #255]" ] }, "mov rax, qword [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr x4, [x7, #256]" ] }, "mov rax, qword [rcx + 32760]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr x4, [x7, #32760]" ] }, "mov rax, qword [rcx + 32761]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ff9", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32762]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ffa", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32763]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ffb", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32764]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ffc", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32765]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ffd", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32766]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ffe", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32767]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7fff", "ldr x4, [x7, x20, sxtx]" ] }, "mov rax, qword [rcx + 32768]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x8000", "ldr x4, [x7, x20, sxtx]" ] }, "movss xmm0, [rcx + 16379]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x3ffb", "ldr s16, [x7, x20, sxtx]" ] }, "movss xmm0, [rcx + 16380]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr s16, [x7, #16380]" ] }, "movss xmm0, [rcx + 16381]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x3ffd", "ldr s16, [x7, x20, sxtx]" ] }, "movss xmm0, [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldr s16, [x7, x20, sxtx]" ] }, "movss xmm0, [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur s16, [x7, #-256]" ] }, "movss xmm0, [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur s16, [x7, #255]" ] }, "movss xmm0, [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr s16, [x7, #256]" ] }, "movsd xmm0, [rcx + 32759]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ff7", "ldr d16, [x7, x20, sxtx]" ] }, "movsd xmm0, [rcx + 32760]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr d16, [x7, #32760]" ] }, "movsd xmm0, [rcx + 32761]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0x7ff9", "ldr d16, [x7, x20, sxtx]" ] }, "movsd xmm0, [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldr d16, [x7, x20, sxtx]" ] }, "movsd xmm0, [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur d16, [x7, #-256]" ] }, "movsd xmm0, [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur d16, [x7, #255]" ] }, "movsd xmm0, [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr d16, [x7, #256]" ] }, "movq xmm0, [rcx + 65519]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0xffef", "ldr d16, [x7, x20, sxtx]" ] }, "movq xmm0, [rcx + 65520]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0xfff0", "ldr d16, [x7, x20, sxtx]" ] }, "movq xmm0, [rcx + 65521]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov w20, #0xfff1", "ldr d16, [x7, x20, sxtx]" ] }, "movq xmm0, [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "mov x20, #0xfffffffffffffeff", "ldr d16, [x7, x20, sxtx]" ] }, "movq xmm0, [rcx - 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur d16, [x7, #-256]" ] }, "movq xmm0, [rcx + 255]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldur d16, [x7, #255]" ] }, "movq xmm0, [rcx + 256]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr d16, [x7, #256]" ] }, "movss xmm0, [ecx + 16379]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3ffb", "add x20, x7, x20", "mov w20, w20", "ldr s16, [x20]" ] }, "movss xmm0, [ecx + 16380]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3ffc", "add x20, x7, x20", "mov w20, w20", "ldr s16, [x20]" ] }, "movss xmm0, [ecx + 16381]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x3ffd", "add x20, x7, x20", "mov w20, w20", "ldr s16, [x20]" ] }, "movss xmm0, [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldr s16, [x20]" ] }, "movss xmm0, [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldr s16, [x20]" ] }, "movss xmm0, [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldr s16, [x20]" ] }, "movss xmm0, [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldr s16, [x20]" ] }, "movsd xmm0, [ecx + 32759]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ff7", "add x20, x7, x20", "mov w20, w20", "ldr d16, [x20]" ] }, "movsd xmm0, [ecx + 32760]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ff8", "add x20, x7, x20", "mov w20, w20", "ldr d16, [x20]" ] }, "movsd xmm0, [ecx + 32761]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0x7ff9", "add x20, x7, x20", "mov w20, w20", "ldr d16, [x20]" ] }, "movsd xmm0, [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldr d16, [x20]" ] }, "movsd xmm0, [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldr d16, [x20]" ] }, "movsd xmm0, [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldr d16, [x20]" ] }, "movsd xmm0, [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx + 65519]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0xffef", "add x20, x7, x20", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx + 65520]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0xfff0", "add x20, x7, x20", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx + 65521]": { "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "mov w20, #0xfff1", "add x20, x7, x20", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx - 257]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx - 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx + 255]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "mov w20, w20", "ldr d16, [x20]" ] }, "movq xmm0, [ecx + 256]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "mov w20, w20", "ldr d16, [x20]" ] }, "prefetch [rcx - 257]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "sub x20, x7, #0x101 (257)", "prfm pldl1keep, [x20]" ] }, "prefetch [rcx - 256]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "sub x20, x7, #0x100 (256)", "prfm pldl1keep, [x20]" ] }, "prefetch [rcx + 255]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x7, #0xff (255)", "prfm pldl1keep, [x20]" ] }, "prefetch [rcx + 256]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x7, #0x100 (256)", "prfm pldl1keep, [x20]" ] }, "prefetch [rcx + 32760]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "mov w20, #0x7ff8", "add x20, x7, x20", "prfm pldl1keep, [x20]" ] }, "prefetch [rcx + 32761]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "mov w20, #0x7ff9", "add x20, x7, x20", "prfm pldl1keep, [x20]" ] }, "prefetch [rax + rcx*1]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7", "prfm pldl1keep, [x20]" ] }, "prefetch [rax + rcx*2]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #1", "prfm pldl1keep, [x20]" ] }, "prefetch [rax + rcx*4]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #2", "prfm pldl1keep, [x20]" ] }, "prefetch [rax + rcx*8]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #3", "prfm pldl1keep, [x20]" ] }, "movzx ebx, byte [rax + rcx*1]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrb w6, [x4, x7, sxtx]" ] }, "movzx ebx, byte [rax + rcx*2]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #1", "ldrb w6, [x20]" ] }, "movzx ebx, byte [rax + rcx*4]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #2", "ldrb w6, [x20]" ] }, "movzx ebx, byte [rax + rcx*8]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #3", "ldrb w6, [x20]" ] }, "movzx ebx, word [rax + rcx*1]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrh w6, [x4, x7, sxtx]" ] }, "movzx ebx, word [rax + rcx*2]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldrh w6, [x4, x7, sxtx #1]" ] }, "movzx ebx, word [rax + rcx*4]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #2", "ldrh w6, [x20]" ] }, "movzx ebx, word [rax + rcx*8]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #3", "ldrh w6, [x20]" ] }, "mov ebx, [rax + rcx*1]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr w6, [x4, x7, sxtx]" ] }, "mov ebx, [rax + rcx*2]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #1", "ldr w6, [x20]" ] }, "mov ebx, [rax + rcx*4]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr w6, [x4, x7, sxtx #2]" ] }, "mov ebx, [rax + rcx*8]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #3", "ldr w6, [x20]" ] }, "mov rbx, [rax + rcx*1]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr x6, [x4, x7, sxtx]" ] }, "mov rbx, [rax + rcx*2]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #1", "ldr x6, [x20]" ] }, "mov rbx, [rax + rcx*4]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "add x20, x4, x7, lsl #2", "ldr x6, [x20]" ] }, "mov rbx, [rax + rcx*8]": { "ExpectedInstructionCount": 1, "ExpectedArm64ASM": [ "ldr x6, [x4, x7, sxtx #3]" ] }, "mov ebx, fs:0x14": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldr x20, [x28, #1000]", "ldr w6, [x20, #20]" ] }, "mov rbx, gs:0x14": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldr x20, [x28, #992]", "ldur x6, [x20, #20]" ] }, "Multiple segment registers": { "x86Insts": [ "mov rax, gs:0x100", "mov rbx, gs:0x14" ], "x86InstructionCount": 2, "ExpectedInstructionCount": 4, "ExpectedArm64ASM": [ "ldr x20, [x28, #992]", "ldr x4, [x20, #256]", "ldr x20, [x28, #992]", "ldur x6, [x20, #20]" ] }, "vmovdqu ymm7,yword [rsi+0x60]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldp q23, q2, [x10, #96]", "str q2, [x28, #304]" ] }, "vmovdqu ymm7,yword [rsi+0x120]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldp q23, q2, [x10, #288]", "str q2, [x28, #304]" ] }, "vmovdqu ymm7,yword [rsi-0x60]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldp q23, q2, [x10, #-96]", "str q2, [x28, #304]" ] }, "vmovdqu ymm7,yword [rsi-0x400]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldp q23, q2, [x10, #-1024]", "str q2, [x28, #304]" ] }, "vmovdqu ymm7,yword [rsi-0x420]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "sub x20, x10, #0x420 (1056)", "ldp q23, q2, [x20]", "str q2, [x28, #304]" ] }, "vmovdqu ymm7,yword [rsi+0x3d0]": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldp q23, q2, [x10, #976]", "str q2, [x28, #304]" ] }, "vmovdqu ymm7,yword [rsi+0x400]": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "add x20, x10, #0x400 (1024)", "ldp q23, q2, [x20]", "str q2, [x28, #304]" ] }, "vmovdqa yword [rcx+0x60],ymm1": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldr q2, [x28, #208]", "stp q17, q2, [x7, #96]" ] }, "vmovdqa yword [rcx+0x3d0],ymm1": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldr q2, [x28, #208]", "stp q17, q2, [x7, #976]" ] }, "vmovdqa yword [rcx-0x3d0],ymm1": { "ExpectedInstructionCount": 2, "ExpectedArm64ASM": [ "ldr q2, [x28, #208]", "stp q17, q2, [x7, #-976]" ] }, "vmovdqa yword [rcx+rsi-0x3d0],ymm1": { "ExpectedInstructionCount": 3, "ExpectedArm64ASM": [ "ldr q2, [x28, #208]", "add x20, x7, x10", "stp q17, q2, [x20, #-976]" ] } } }