Files
FEX-Emu--FEX/unittests/InstructionCountCI/Primary.json
T

4606 lines
114 KiB
JSON

{
"Features": {
"Bitness": 64,
"EnabledHostFeatures": [],
"DisabledHostFeatures": [
"SVE128",
"SVE256",
"AFP",
"FLAGM",
"FLAGM2",
"MOPS"
],
"BinaryCacheVersion": 19
},
"Instructions": {
"add bl, cl": {
"ExpectedInstructionCount": 8,
"Comment": "0x00",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"lsl w0, w6, #24",
"cmn w0, w7, lsl #24",
"add w26, w6, w7",
"bfxil x6, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"add bx, cx": {
"ExpectedInstructionCount": 8,
"Comment": "0x01",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"lsl w0, w6, #16",
"cmn w0, w7, lsl #16",
"add w26, w6, w7",
"bfxil x6, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"add ebx, ecx": {
"ExpectedInstructionCount": 6,
"Comment": "0x01",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"adds w26, w6, w7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x6, x26"
]
},
"add rbx, rcx": {
"ExpectedInstructionCount": 6,
"Comment": "0x01",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"adds x26, x6, x7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x6, x26"
]
},
"db 0x02, 0xcb": {
"ExpectedInstructionCount": 8,
"Comment": [
"0x02",
"add bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"lsl w0, w7, #24",
"cmn w0, w6, lsl #24",
"add w26, w7, w6",
"bfxil x7, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x66, 0x03, 0xcb": {
"ExpectedInstructionCount": 8,
"Comment": [
"0x03",
"add bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"lsl w0, w7, #16",
"cmn w0, w6, lsl #16",
"add w26, w7, w6",
"bfxil x7, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x03, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x03",
"add ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"adds w26, w7, w6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x7, x26"
]
},
"db 0x48, 0x03, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x03",
"add rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"adds x26, x7, x6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x7, x26"
]
},
"add al, 1": {
"ExpectedInstructionCount": 11,
"Comment": "0x04",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #24",
"cmn w0, w20, lsl #24",
"add w26, w4, #0x1 (1)",
"mov x20, x4",
"bfxil x20, x26, #0, #8",
"mrs x21, nzcv",
"eor w21, w21, #0x20000000",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x20"
]
},
"add ax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "0x05",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #16",
"cmn w0, w20, lsl #16",
"add w26, w4, #0x1 (1)",
"mov x20, x4",
"bfxil x20, x26, #0, #16",
"mrs x21, nzcv",
"eor w21, w21, #0x20000000",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x20"
]
},
"add eax, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x05",
"ExpectedArm64ASM": [
"adds w26, w4, #0x1 (1)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"add rax, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x05",
"ExpectedArm64ASM": [
"adds x26, x4, #0x1 (1)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"add al, -1": {
"ExpectedInstructionCount": 9,
"Comment": "0x04",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"mvn w27, w4",
"lsl w0, w4, #24",
"cmn w0, w20, lsl #24",
"add w26, w4, #0xff (255)",
"bfxil x4, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"add ax, -1": {
"ExpectedInstructionCount": 9,
"Comment": "0x05",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"mvn w27, w4",
"lsl w0, w4, #16",
"cmn w0, w20, lsl #16",
"add w26, w4, w20",
"bfxil x4, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"add eax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x05",
"ExpectedArm64ASM": [
"mvn w27, w4",
"subs w26, w4, #0x1 (1)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"add rax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x05",
"ExpectedArm64ASM": [
"mvn w27, w4",
"subs x26, x4, #0x1 (1)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"or bl, bh": {
"ExpectedInstructionCount": 7,
"Comment": "",
"ExpectedArm64ASM": [
"lsr w20, w6, #8",
"orr w26, w6, w20",
"cmn wzr, w26, lsl #24",
"bfxil x6, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"or bl, cl": {
"ExpectedInstructionCount": 6,
"Comment": "0x08",
"ExpectedArm64ASM": [
"orr w26, w6, w7",
"cmn wzr, w26, lsl #24",
"bfxil x6, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"or bx, cx": {
"ExpectedInstructionCount": 6,
"Comment": "0x09",
"ExpectedArm64ASM": [
"orr w26, w6, w7",
"cmn wzr, w26, lsl #16",
"bfxil x6, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"or ebx, ecx": {
"ExpectedInstructionCount": 2,
"Comment": "0x09",
"ExpectedArm64ASM": [
"orr w6, w6, w7",
"subs w26, w6, #0x0 (0)"
]
},
"or rbx, rcx": {
"ExpectedInstructionCount": 2,
"Comment": "0x09",
"ExpectedArm64ASM": [
"orr x6, x6, x7",
"subs x26, x6, #0x0 (0)"
]
},
"db 0x0A, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x0A",
"or bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"orr w26, w7, w6",
"cmn wzr, w26, lsl #24",
"bfxil x7, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x66, 0x0B, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x0B",
"or bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"orr w26, w7, w6",
"cmn wzr, w26, lsl #16",
"bfxil x7, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x0B, 0xcb": {
"ExpectedInstructionCount": 2,
"Comment": [
"0x0B",
"or ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"orr w7, w7, w6",
"subs w26, w7, #0x0 (0)"
]
},
"db 0x48, 0x0B, 0xcb": {
"ExpectedInstructionCount": 2,
"Comment": [
"0x0B",
"or rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"orr x7, x7, x6",
"subs x26, x7, #0x0 (0)"
]
},
"or al, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x0C",
"ExpectedArm64ASM": [
"orr x26, x4, #0x1",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"or ax, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x0D",
"ExpectedArm64ASM": [
"orr x26, x4, #0x1",
"cmn wzr, w26, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"or eax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x0D",
"ExpectedArm64ASM": [
"orr w4, w4, #0x1",
"subs w26, w4, #0x0 (0)"
]
},
"or rax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x0D",
"ExpectedArm64ASM": [
"orr x4, x4, #0x1",
"subs x26, x4, #0x0 (0)"
]
},
"or al, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x0C",
"ExpectedArm64ASM": [
"orr x26, x4, #0xff",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"or ax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x0D",
"ExpectedArm64ASM": [
"orr x26, x4, #0xffff",
"cmn wzr, w26, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"or eax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "0x0D",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"orr w4, w4, w20",
"subs w26, w4, #0x0 (0)"
]
},
"or rax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "0x0D",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"orr x4, x4, x20",
"subs x26, x4, #0x0 (0)"
]
},
"adc bl, cl": {
"ExpectedInstructionCount": 17,
"Comment": "0x10",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"uxtb x20, w7",
"cinc w21, w20, lo",
"add w22, w6, w21",
"uxtb w26, w22",
"cmp w26, w21",
"cset x21, hs",
"cmn wzr, w26, lsl #24",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w6, w20",
"eor w21, w26, w6",
"bic w20, w21, w20",
"ubfx x20, x20, #7, #1",
"bfi w22, w20, #28, #1",
"bfxil x6, x26, #0, #8",
"msr nzcv, x22"
]
},
"adc bx, cx": {
"ExpectedInstructionCount": 17,
"Comment": "0x11",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"uxth x20, w7",
"cinc w21, w20, lo",
"add w22, w6, w21",
"uxth w26, w22",
"cmp w26, w21",
"cset x21, hs",
"cmn wzr, w26, lsl #16",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w6, w20",
"eor w21, w26, w6",
"bic w20, w21, w20",
"ubfx x20, x20, #15, #1",
"bfi w22, w20, #28, #1",
"bfxil x6, x26, #0, #16",
"msr nzcv, x22"
]
},
"adc ebx, ecx": {
"ExpectedInstructionCount": 9,
"Comment": "0x11",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"adcs w26, w6, w7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x6, x26"
]
},
"adc rbx, rcx": {
"ExpectedInstructionCount": 9,
"Comment": "0x11",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"adcs x26, x6, x7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x6, x26"
]
},
"db 0x12, 0xcb": {
"ExpectedInstructionCount": 17,
"Comment": [
"0x12",
"adc bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"uxtb x20, w6",
"cinc w21, w20, lo",
"add w22, w7, w21",
"uxtb w26, w22",
"cmp w26, w21",
"cset x21, hs",
"cmn wzr, w26, lsl #24",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w7, w20",
"eor w21, w26, w7",
"bic w20, w21, w20",
"ubfx x20, x20, #7, #1",
"bfi w22, w20, #28, #1",
"bfxil x7, x26, #0, #8",
"msr nzcv, x22"
]
},
"db 0x66, 0x13, 0xcb": {
"ExpectedInstructionCount": 17,
"Comment": [
"0x13",
"adc bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"uxth x20, w6",
"cinc w21, w20, lo",
"add w22, w7, w21",
"uxth w26, w22",
"cmp w26, w21",
"cset x21, hs",
"cmn wzr, w26, lsl #16",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w7, w20",
"eor w21, w26, w7",
"bic w20, w21, w20",
"ubfx x20, x20, #15, #1",
"bfi w22, w20, #28, #1",
"bfxil x7, x26, #0, #16",
"msr nzcv, x22"
]
},
"db 0x13, 0xcb": {
"ExpectedInstructionCount": 9,
"Comment": [
"0x13",
"adc ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"adcs w26, w7, w6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x7, x26"
]
},
"db 0x48, 0x13, 0xcb": {
"ExpectedInstructionCount": 9,
"Comment": [
"0x13",
"adc rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"adcs x26, x7, x6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x7, x26"
]
},
"adc al, 1": {
"ExpectedInstructionCount": 17,
"Comment": "0x14",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"cinc w20, w20, lo",
"add w21, w4, w20",
"uxtb w26, w21",
"cmp w26, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #24",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"bic w20, w26, w4",
"ubfx x20, x20, #7, #1",
"bfi w21, w20, #28, #1",
"mov x20, x4",
"bfxil x20, x26, #0, #8",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x20"
]
},
"adc ax, 1": {
"ExpectedInstructionCount": 17,
"Comment": "0x15",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"cinc w20, w20, lo",
"add w21, w4, w20",
"uxth w26, w21",
"cmp w26, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #16",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"bic w20, w26, w4",
"ubfx x20, x20, #15, #1",
"bfi w21, w20, #28, #1",
"mov x20, x4",
"bfxil x20, x26, #0, #16",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x20"
]
},
"adc eax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "0x15",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"mrs x21, nzcv",
"eor w21, w21, #0x20000000",
"msr nzcv, x21",
"adcs w26, w4, w20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"adc rax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "0x15",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"mrs x21, nzcv",
"eor w21, w21, #0x20000000",
"msr nzcv, x21",
"adcs x26, x4, x20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"adc al, -1": {
"ExpectedInstructionCount": 15,
"Comment": "0x14",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"mvn w27, w4",
"cinc w20, w20, lo",
"add w21, w4, w20",
"uxtb w26, w21",
"cmp w26, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #24",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"bic w20, w4, w26",
"ubfx x20, x20, #7, #1",
"bfi w21, w20, #28, #1",
"bfxil x4, x26, #0, #8",
"msr nzcv, x21"
]
},
"adc ax, -1": {
"ExpectedInstructionCount": 15,
"Comment": "0x15",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"mvn w27, w4",
"cinc w20, w20, lo",
"add w21, w4, w20",
"uxth w26, w21",
"cmp w26, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #16",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"bic w20, w4, w26",
"ubfx x20, x20, #15, #1",
"bfi w21, w20, #28, #1",
"bfxil x4, x26, #0, #16",
"msr nzcv, x21"
]
},
"adc eax, -1": {
"ExpectedInstructionCount": 10,
"Comment": "0x15",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"mvn w27, w4",
"mrs x21, nzcv",
"eor w21, w21, #0x20000000",
"msr nzcv, x21",
"adcs w26, w4, w20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"adc rax, -1": {
"ExpectedInstructionCount": 10,
"Comment": "0x15",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"mvn w27, w4",
"mrs x21, nzcv",
"eor w21, w21, #0x20000000",
"msr nzcv, x21",
"adcs x26, x4, x20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sbb bl, cl": {
"ExpectedInstructionCount": 18,
"Comment": "0x18",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"uxtb w20, w6",
"uxtb x21, w7",
"cinc w22, w21, lo",
"sub w23, w20, w22",
"uxtb w26, w23",
"cmp w20, w22",
"cset x22, hs",
"cmn wzr, w26, lsl #24",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor w21, w20, w21",
"eor w20, w26, w20",
"and w20, w20, w21",
"ubfx x20, x20, #7, #1",
"bfi w23, w20, #28, #1",
"bfxil x6, x26, #0, #8",
"msr nzcv, x23"
]
},
"sbb bx, cx": {
"ExpectedInstructionCount": 18,
"Comment": "0x19",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"uxth w20, w6",
"uxth x21, w7",
"cinc w22, w21, lo",
"sub w23, w20, w22",
"uxth w26, w23",
"cmp w20, w22",
"cset x22, hs",
"cmn wzr, w26, lsl #16",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor w21, w20, w21",
"eor w20, w26, w20",
"and w20, w20, w21",
"ubfx x20, x20, #15, #1",
"bfi w23, w20, #28, #1",
"bfxil x6, x26, #0, #16",
"msr nzcv, x23"
]
},
"sbb ebx, ecx": {
"ExpectedInstructionCount": 3,
"Comment": "0x19",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"sbcs w26, w6, w7",
"mov x6, x26"
]
},
"sbb rbx, rcx": {
"ExpectedInstructionCount": 3,
"Comment": "0x19",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"sbcs x26, x6, x7",
"mov x6, x26"
]
},
"db 0x1A, 0xcb": {
"ExpectedInstructionCount": 18,
"Comment": [
"0x1A",
"sbb bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"uxtb w20, w7",
"uxtb x21, w6",
"cinc w22, w21, lo",
"sub w23, w20, w22",
"uxtb w26, w23",
"cmp w20, w22",
"cset x22, hs",
"cmn wzr, w26, lsl #24",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor w21, w20, w21",
"eor w20, w26, w20",
"and w20, w20, w21",
"ubfx x20, x20, #7, #1",
"bfi w23, w20, #28, #1",
"bfxil x7, x26, #0, #8",
"msr nzcv, x23"
]
},
"db 0x66, 0x1B, 0xcb": {
"ExpectedInstructionCount": 18,
"Comment": [
"0x1B",
"sbb bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"uxth w20, w7",
"uxth x21, w6",
"cinc w22, w21, lo",
"sub w23, w20, w22",
"uxth w26, w23",
"cmp w20, w22",
"cset x22, hs",
"cmn wzr, w26, lsl #16",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor w21, w20, w21",
"eor w20, w26, w20",
"and w20, w20, w21",
"ubfx x20, x20, #15, #1",
"bfi w23, w20, #28, #1",
"bfxil x7, x26, #0, #16",
"msr nzcv, x23"
]
},
"db 0x1B, 0xcb": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x1B",
"sbb ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"sbcs w26, w7, w6",
"mov x7, x26"
]
},
"db 0x48, 0x1B, 0xcb": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x1B",
"sbb rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"sbcs x26, x7, x6",
"mov x7, x26"
]
},
"sbb al, 1": {
"ExpectedInstructionCount": 18,
"Comment": "0x1C",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"uxtb w21, w4",
"cinc w20, w20, lo",
"sub w22, w21, w20",
"uxtb w26, w22",
"cmp w21, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #24",
"mrs x22, nzcv",
"bfi w22, w20, #29, #1",
"bic w20, w21, w26",
"ubfx x20, x20, #7, #1",
"bfi w22, w20, #28, #1",
"mov x20, x4",
"bfxil x20, x26, #0, #8",
"msr nzcv, x22",
"mov x27, x4",
"mov x4, x20"
]
},
"sbb ax, 1": {
"ExpectedInstructionCount": 18,
"Comment": "0x1D",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"uxth w21, w4",
"cinc w20, w20, lo",
"sub w22, w21, w20",
"uxth w26, w22",
"cmp w21, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #16",
"mrs x22, nzcv",
"bfi w22, w20, #29, #1",
"bic w20, w21, w26",
"ubfx x20, x20, #15, #1",
"bfi w22, w20, #28, #1",
"mov x20, x4",
"bfxil x20, x26, #0, #16",
"msr nzcv, x22",
"mov x27, x4",
"mov x4, x20"
]
},
"sbb eax, 1": {
"ExpectedInstructionCount": 4,
"Comment": "0x1D",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"sbcs w26, w4, w20",
"mov x27, x4",
"mov x4, x26"
]
},
"sbb rax, 1": {
"ExpectedInstructionCount": 4,
"Comment": "0x1D",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"sbcs x26, x4, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"sbb al, -1": {
"ExpectedInstructionCount": 16,
"Comment": "0x1C",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"mvn w27, w4",
"uxtb w21, w4",
"cinc w20, w20, lo",
"sub w22, w21, w20",
"uxtb w26, w22",
"cmp w21, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #24",
"mrs x22, nzcv",
"bfi w22, w20, #29, #1",
"bic w20, w26, w21",
"ubfx x20, x20, #7, #1",
"bfi w22, w20, #28, #1",
"bfxil x4, x26, #0, #8",
"msr nzcv, x22"
]
},
"sbb ax, -1": {
"ExpectedInstructionCount": 16,
"Comment": "0x1D",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"mvn w27, w4",
"uxth w21, w4",
"cinc w20, w20, lo",
"sub w22, w21, w20",
"uxth w26, w22",
"cmp w21, w20",
"cset x20, hs",
"cmn wzr, w26, lsl #16",
"mrs x22, nzcv",
"bfi w22, w20, #29, #1",
"bic w20, w26, w21",
"ubfx x20, x20, #15, #1",
"bfi w22, w20, #28, #1",
"bfxil x4, x26, #0, #16",
"msr nzcv, x22"
]
},
"sbb eax, -1": {
"ExpectedInstructionCount": 4,
"Comment": "0x1D",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"mvn w27, w4",
"sbcs w26, w4, w20",
"mov x4, x26"
]
},
"sbb rax, -1": {
"ExpectedInstructionCount": 4,
"Comment": "0x1D",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"mvn w27, w4",
"sbcs x26, x4, x20",
"mov x4, x26"
]
},
"and bl, cl": {
"ExpectedInstructionCount": 6,
"Comment": "0x20",
"ExpectedArm64ASM": [
"and w26, w6, w7",
"cmn wzr, w26, lsl #24",
"bfxil x6, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"and bx, cx": {
"ExpectedInstructionCount": 6,
"Comment": "0x21",
"ExpectedArm64ASM": [
"and w26, w6, w7",
"cmn wzr, w26, lsl #16",
"bfxil x6, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"and ebx, ecx": {
"ExpectedInstructionCount": 5,
"Comment": "0x21",
"ExpectedArm64ASM": [
"ands w26, w6, w7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x6, x26"
]
},
"and rbx, rcx": {
"ExpectedInstructionCount": 5,
"Comment": "0x21",
"ExpectedArm64ASM": [
"ands x26, x6, x7",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x6, x26"
]
},
"db 0x22, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x22",
"and bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"and w26, w7, w6",
"cmn wzr, w26, lsl #24",
"bfxil x7, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x66, 0x23, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x23",
"and bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"and w26, w7, w6",
"cmn wzr, w26, lsl #16",
"bfxil x7, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x23, 0xcb": {
"ExpectedInstructionCount": 5,
"Comment": [
"0x23",
"and ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"ands w26, w7, w6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x7, x26"
]
},
"db 0x48, 0x23, 0xcb": {
"ExpectedInstructionCount": 5,
"Comment": [
"0x23",
"and rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"ands x26, x7, x6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x7, x26"
]
},
"and al, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x24",
"ExpectedArm64ASM": [
"and x26, x4, #0xffffffffffffff01",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and ax, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x25",
"ExpectedArm64ASM": [
"and x26, x4, #0xffffffffffff0001",
"cmn wzr, w26, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and eax, 1": {
"ExpectedInstructionCount": 5,
"Comment": "0x25",
"ExpectedArm64ASM": [
"ands w26, w4, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and rax, 1": {
"ExpectedInstructionCount": 5,
"Comment": "0x25",
"ExpectedArm64ASM": [
"ands x26, x4, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and al, -1": {
"ExpectedInstructionCount": 5,
"Comment": "0x24",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"and ax, -1": {
"ExpectedInstructionCount": 5,
"Comment": "0x25",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"and eax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x25",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"ands w26, w4, w20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and rax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x25",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"ands x26, x4, x20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sub bl, cl": {
"ExpectedInstructionCount": 5,
"Comment": "0x28",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"lsl w0, w6, #24",
"cmp w0, w7, lsl #24",
"sub w26, w6, w7",
"bfxil x6, x26, #0, #8"
]
},
"sub bx, cx": {
"ExpectedInstructionCount": 5,
"Comment": "0x29",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"lsl w0, w6, #16",
"cmp w0, w7, lsl #16",
"sub w26, w6, w7",
"bfxil x6, x26, #0, #16"
]
},
"sub ebx, ecx": {
"ExpectedInstructionCount": 3,
"Comment": "0x29",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"subs w26, w6, w7",
"mov x6, x26"
]
},
"sub rbx, rcx": {
"ExpectedInstructionCount": 3,
"Comment": "0x29",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"subs x26, x6, x7",
"mov x6, x26"
]
},
"db 0x2A, 0xcb": {
"ExpectedInstructionCount": 5,
"Comment": [
"0x2A",
"sub bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"lsl w0, w7, #24",
"cmp w0, w6, lsl #24",
"sub w26, w7, w6",
"bfxil x7, x26, #0, #8"
]
},
"db 0x66, 0x2B, 0xcb": {
"ExpectedInstructionCount": 5,
"Comment": [
"0x2B",
"sub bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"lsl w0, w7, #16",
"cmp w0, w6, lsl #16",
"sub w26, w7, w6",
"bfxil x7, x26, #0, #16"
]
},
"db 0x2B, 0xcb": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x2B",
"sub ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"subs w26, w7, w6",
"mov x7, x26"
]
},
"db 0x48, 0x2B, 0xcb": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x2B",
"sub rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"subs x26, x7, x6",
"mov x7, x26"
]
},
"sub al, 1": {
"ExpectedInstructionCount": 8,
"Comment": "0x2C",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, #0x1 (1)",
"mov x20, x4",
"bfxil x20, x26, #0, #8",
"mov x27, x4",
"mov x4, x20"
]
},
"sub ax, 1": {
"ExpectedInstructionCount": 8,
"Comment": "0x2D",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, #0x1 (1)",
"mov x20, x4",
"bfxil x20, x26, #0, #16",
"mov x27, x4",
"mov x4, x20"
]
},
"sub eax, 1": {
"ExpectedInstructionCount": 3,
"Comment": "0x2D",
"ExpectedArm64ASM": [
"subs w26, w4, #0x1 (1)",
"mov x27, x4",
"mov x4, x26"
]
},
"sub rax, 1": {
"ExpectedInstructionCount": 3,
"Comment": "0x2D",
"ExpectedArm64ASM": [
"subs x26, x4, #0x1 (1)",
"mov x27, x4",
"mov x4, x26"
]
},
"sub al, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x2C",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"mvn w27, w4",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, #0xff (255)",
"bfxil x4, x26, #0, #8"
]
},
"sub ax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x2D",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"mvn w27, w4",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20",
"bfxil x4, x26, #0, #16"
]
},
"sub eax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "0x2D",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds w26, w4, #0x1 (1)",
"mov x4, x26"
]
},
"sub rax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "0x2D",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds x26, x4, #0x1 (1)",
"mov x4, x26"
]
},
"xor bl, cl": {
"ExpectedInstructionCount": 6,
"Comment": "0x30",
"ExpectedArm64ASM": [
"eor w26, w6, w7",
"cmn wzr, w26, lsl #24",
"bfxil x6, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"xor bx, cx": {
"ExpectedInstructionCount": 6,
"Comment": "0x31",
"ExpectedArm64ASM": [
"eor w26, w6, w7",
"cmn wzr, w26, lsl #16",
"bfxil x6, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"xor ebx, ecx": {
"ExpectedInstructionCount": 2,
"Comment": "0x31",
"ExpectedArm64ASM": [
"eor w6, w6, w7",
"subs w26, w6, #0x0 (0)"
]
},
"xor rbx, rcx": {
"ExpectedInstructionCount": 2,
"Comment": "0x31",
"ExpectedArm64ASM": [
"eor x6, x6, x7",
"subs x26, x6, #0x0 (0)"
]
},
"db 0x32, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x32",
"xor bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor w26, w7, w6",
"cmn wzr, w26, lsl #24",
"bfxil x7, x26, #0, #8",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x66, 0x33, 0xcb": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x33",
"xor bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor w26, w7, w6",
"cmn wzr, w26, lsl #16",
"bfxil x7, x26, #0, #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"db 0x33, 0xcb": {
"ExpectedInstructionCount": 2,
"Comment": [
"0x33",
"xor ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor w7, w7, w6",
"subs w26, w7, #0x0 (0)"
]
},
"db 0x48, 0x33, 0xcb": {
"ExpectedInstructionCount": 2,
"Comment": [
"0x33",
"xor rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x7, x7, x6",
"subs x26, x7, #0x0 (0)"
]
},
"xor al, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x34",
"ExpectedArm64ASM": [
"eor x26, x4, #0x1",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"xor ax, 1": {
"ExpectedInstructionCount": 6,
"Comment": "0x35",
"ExpectedArm64ASM": [
"eor x26, x4, #0x1",
"cmn wzr, w26, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"xor eax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x35",
"ExpectedArm64ASM": [
"eor w4, w4, #0x1",
"subs w26, w4, #0x0 (0)"
]
},
"xor rax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x35",
"ExpectedArm64ASM": [
"eor x4, x4, #0x1",
"subs x26, x4, #0x0 (0)"
]
},
"cmp bl, cl": {
"ExpectedInstructionCount": 4,
"Comment": "0x38",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"lsl w0, w6, #24",
"cmp w0, w7, lsl #24",
"sub w26, w6, w7"
]
},
"xor al, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x34",
"ExpectedArm64ASM": [
"eor x26, x4, #0xff",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"xor ax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "0x35",
"ExpectedArm64ASM": [
"eor x26, x4, #0xffff",
"cmn wzr, w26, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"xor eax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "0x35",
"ExpectedArm64ASM": [
"mvn w4, w4",
"subs w26, w4, #0x0 (0)"
]
},
"xor rax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "0x35",
"ExpectedArm64ASM": [
"mvn x4, x4",
"subs x26, x4, #0x0 (0)"
]
},
"cmp bx, cx": {
"ExpectedInstructionCount": 4,
"Comment": "0x39",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"lsl w0, w6, #16",
"cmp w0, w7, lsl #16",
"sub w26, w6, w7"
]
},
"cmp ebx, ecx": {
"ExpectedInstructionCount": 2,
"Comment": "0x39",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"subs w26, w6, w7"
]
},
"cmp rbx, rcx": {
"ExpectedInstructionCount": 2,
"Comment": "0x39",
"ExpectedArm64ASM": [
"eor x27, x6, x7",
"subs x26, x6, x7"
]
},
"db 0x3A, 0xcb": {
"ExpectedInstructionCount": 4,
"Comment": [
"0x3A",
"cmp bl, cl but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"lsl w0, w7, #24",
"cmp w0, w6, lsl #24",
"sub w26, w7, w6"
]
},
"db 0x66, 0x3B, 0xcb": {
"ExpectedInstructionCount": 4,
"Comment": [
"0x3B",
"cmp bx, cx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"lsl w0, w7, #16",
"cmp w0, w6, lsl #16",
"sub w26, w7, w6"
]
},
"db 0x3B, 0xcb": {
"ExpectedInstructionCount": 2,
"Comment": [
"0x3B",
"cmp ebx, ecx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"subs w26, w7, w6"
]
},
"db 0x48, 0x3B, 0xcb": {
"ExpectedInstructionCount": 2,
"Comment": [
"0x3B",
"cmp rbx, rcx but modrm.rm as source"
],
"ExpectedArm64ASM": [
"eor x27, x7, x6",
"subs x26, x7, x6"
]
},
"cmp al, 1": {
"ExpectedInstructionCount": 5,
"Comment": "0x3C",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, #0x1 (1)",
"mov x27, x4"
]
},
"cmp ax, 1": {
"ExpectedInstructionCount": 5,
"Comment": "0x3D",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, #0x1 (1)",
"mov x27, x4"
]
},
"cmp eax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x3D",
"ExpectedArm64ASM": [
"subs w26, w4, #0x1 (1)",
"mov x27, x4"
]
},
"cmp rax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x3D",
"ExpectedArm64ASM": [
"subs x26, x4, #0x1 (1)",
"mov x27, x4"
]
},
"cmp al, -1": {
"ExpectedInstructionCount": 5,
"Comment": "0x3C",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"mvn w27, w4",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, #0xff (255)"
]
},
"cmp ax, -1": {
"ExpectedInstructionCount": 5,
"Comment": "0x3D",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"mvn w27, w4",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20"
]
},
"cmp eax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "0x3D",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds w26, w4, #0x1 (1)"
]
},
"cmp rax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "0x3D",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds x26, x4, #0x1 (1)"
]
},
"push ax": {
"ExpectedInstructionCount": 1,
"Comment": "0x50",
"ExpectedArm64ASM": [
"strh w4, [x8, #-2]!"
]
},
"push rax": {
"ExpectedInstructionCount": 1,
"Comment": "0x50",
"ExpectedArm64ASM": [
"str x4, [x8, #-8]!"
]
},
"pop ax": {
"ExpectedInstructionCount": 2,
"Comment": "0x8f",
"ExpectedArm64ASM": [
"ldrh w20, [x8], #2",
"bfxil x4, x20, #0, #16"
]
},
"pop rax": {
"ExpectedInstructionCount": 1,
"Comment": "0x8f",
"ExpectedArm64ASM": [
"ldr x4, [x8], #8"
]
},
"movsxd rax, ebx": {
"ExpectedInstructionCount": 1,
"Comment": "0x63",
"ExpectedArm64ASM": [
"sxtw x4, w6"
]
},
"push word 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x68",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"strh w20, [x8, #-2]!"
]
},
"push qword 1": {
"ExpectedInstructionCount": 2,
"Comment": "0x68",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"str x20, [x8, #-8]!"
]
},
"imul ax, bx, 257": {
"ExpectedInstructionCount": 8,
"Comment": "0x69",
"ExpectedArm64ASM": [
"mov w20, #0x101",
"sxth x21, w6",
"mul x20, x21, x20",
"sbfx x21, x20, #16, #16",
"bfxil x4, x20, #0, #16",
"sbfx x20, x20, #15, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul eax, ebx, 257": {
"ExpectedInstructionCount": 7,
"Comment": "0x69",
"ExpectedArm64ASM": [
"mov w20, #0x101",
"smull x21, w6, w20",
"asr x21, x21, #32",
"mul w4, w6, w20",
"sbfx x20, x4, #31, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul rax, rbx, 257": {
"ExpectedInstructionCount": 6,
"Comment": "0x69",
"ExpectedArm64ASM": [
"mov w20, #0x101",
"smulh x21, x6, x20",
"mul x4, x6, x20",
"asr x20, x4, #63",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"push word -1": {
"ExpectedInstructionCount": 2,
"Comment": "0x6a",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"strh w20, [x8, #-2]!"
]
},
"push qword -1": {
"ExpectedInstructionCount": 2,
"Comment": "0x6a",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"str x20, [x8, #-8]!"
]
},
"imul ax, bx, 3": {
"ExpectedInstructionCount": 8,
"Comment": "0x6b",
"ExpectedArm64ASM": [
"mov w20, #0x3",
"sxth x21, w6",
"mul x20, x21, x20",
"sbfx x21, x20, #16, #16",
"bfxil x4, x20, #0, #16",
"sbfx x20, x20, #15, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul eax, ebx, 3": {
"ExpectedInstructionCount": 7,
"Comment": "0x6b",
"ExpectedArm64ASM": [
"mov w20, #0x3",
"smull x21, w6, w20",
"asr x21, x21, #32",
"mul w4, w6, w20",
"sbfx x20, x4, #31, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul rax, rbx, 3": {
"ExpectedInstructionCount": 6,
"Comment": "0x6b",
"ExpectedArm64ASM": [
"mov w20, #0x3",
"smulh x21, x6, x20",
"mul x4, x6, x20",
"asr x20, x4, #63",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"test al, bl": {
"ExpectedInstructionCount": 5,
"Comment": "0x84",
"ExpectedArm64ASM": [
"and w26, w4, w6",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test ax, bx": {
"ExpectedInstructionCount": 5,
"Comment": "0x84",
"ExpectedArm64ASM": [
"and w26, w4, w6",
"cmn wzr, w26, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test eax, ebx": {
"ExpectedInstructionCount": 4,
"Comment": "0x84",
"ExpectedArm64ASM": [
"ands w26, w4, w6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test rax, rbx": {
"ExpectedInstructionCount": 4,
"Comment": "0x84",
"ExpectedArm64ASM": [
"ands x26, x4, x6",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test al, al": {
"ExpectedInstructionCount": 5,
"Comment": "0x84",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"test ax, ax": {
"ExpectedInstructionCount": 5,
"Comment": "0x84",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"test eax, eax": {
"ExpectedInstructionCount": 1,
"Comment": "0x84",
"ExpectedArm64ASM": [
"subs w26, w4, #0x0 (0)"
]
},
"test rax, rax": {
"ExpectedInstructionCount": 1,
"Comment": "0x84",
"ExpectedArm64ASM": [
"subs x26, x4, #0x0 (0)"
]
},
"db 0x86, 0xcb": {
"ExpectedInstructionCount": 4,
"Comment": [
"0x86",
"xchg bl, cl"
],
"ExpectedArm64ASM": [
"mov x20, x6",
"bfxil x20, x7, #0, #8",
"bfxil x7, x6, #0, #8",
"mov x6, x20"
]
},
"db 0x86, 0xd9": {
"ExpectedInstructionCount": 4,
"Comment": [
"0x86",
"xchg cl, bl"
],
"ExpectedArm64ASM": [
"mov x20, x7",
"bfxil x20, x6, #0, #8",
"bfxil x6, x7, #0, #8",
"mov x7, x20"
]
},
"xchg [rax], cl": {
"ExpectedInstructionCount": 2,
"Comment": "0x86",
"ExpectedArm64ASM": [
"swpalb w7, w20, [x4]",
"bfxil x7, x20, #0, #8"
]
},
"db 0x66, 0x87, 0xcb": {
"ExpectedInstructionCount": 4,
"Comment": [
"0x87",
"xchg bx, cx"
],
"ExpectedArm64ASM": [
"mov x20, x6",
"bfxil x20, x7, #0, #16",
"bfxil x7, x6, #0, #16",
"mov x6, x20"
]
},
"db 0x66, 0x87, 0xd9": {
"ExpectedInstructionCount": 4,
"Comment": [
"0x87",
"xchg cx, bx"
],
"ExpectedArm64ASM": [
"mov x20, x7",
"bfxil x20, x6, #0, #16",
"bfxil x6, x7, #0, #16",
"mov x7, x20"
]
},
"xchg [rax], cx": {
"ExpectedInstructionCount": 2,
"Comment": "0x87",
"ExpectedArm64ASM": [
"swpalh w7, w20, [x4]",
"bfxil x7, x20, #0, #16"
]
},
"db 0x87, 0xcb": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x87",
"xchg ebx, ecx"
],
"ExpectedArm64ASM": [
"mov w20, w7",
"mov w7, w6",
"mov x6, x20"
]
},
"db 0x87, 0xd9": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x87",
"xchg ecx, ebx"
],
"ExpectedArm64ASM": [
"mov w20, w6",
"mov w6, w7",
"mov x7, x20"
]
},
"xchg [rax], ecx": {
"ExpectedInstructionCount": 1,
"Comment": "0x87",
"ExpectedArm64ASM": [
"swpal w7, w7, [x4]"
]
},
"db 0x48, 0x87, 0xcb": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x87",
"xchg rbx, rcx"
],
"ExpectedArm64ASM": [
"mov x20, x6",
"mov x6, x7",
"mov x7, x20"
]
},
"db 0x48, 0x87, 0xd9": {
"ExpectedInstructionCount": 3,
"Comment": [
"0x87",
"xchg rcx, rbx"
],
"ExpectedArm64ASM": [
"mov x20, x6",
"mov x6, x7",
"mov x7, x20"
]
},
"xchg [rax], rcx": {
"ExpectedInstructionCount": 1,
"Comment": "0x87",
"ExpectedArm64ASM": [
"swpal x7, x7, [x4]"
]
},
"mov [rax], bl": {
"ExpectedInstructionCount": 1,
"Comment": "0x88",
"ExpectedArm64ASM": [
"strb w6, [x4]"
]
},
"mov [rax], bx": {
"ExpectedInstructionCount": 1,
"Comment": "0x89",
"ExpectedArm64ASM": [
"strh w6, [x4]"
]
},
"mov [rax], ebx": {
"ExpectedInstructionCount": 1,
"Comment": "0x89",
"ExpectedArm64ASM": [
"str w6, [x4]"
]
},
"mov [rax], rbx": {
"ExpectedInstructionCount": 1,
"Comment": "0x89",
"ExpectedArm64ASM": [
"str x6, [x4]"
]
},
"mov bl, [rax]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8a",
"ExpectedArm64ASM": [
"ldrb w20, [x4]",
"bfxil x6, x20, #0, #8"
]
},
"mov bx, [rax]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8b",
"ExpectedArm64ASM": [
"ldrh w20, [x4]",
"bfxil x6, x20, #0, #16"
]
},
"mov ebx, [rax]": {
"ExpectedInstructionCount": 1,
"Comment": "0x8b",
"ExpectedArm64ASM": [
"ldr w6, [x4]"
]
},
"mov rbx, [rax]": {
"ExpectedInstructionCount": 1,
"Comment": "0x8b",
"ExpectedArm64ASM": [
"ldr x6, [x4]"
]
},
"mov ax, cs": {
"ExpectedInstructionCount": 2,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w20, [x28, #962]",
"bfxil x4, x20, #0, #16"
]
},
"mov eax, cs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #962]"
]
},
"mov rax, cs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #962]"
]
},
"mov ax, es": {
"ExpectedInstructionCount": 2,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w20, [x28, #960]",
"bfxil x4, x20, #0, #16"
]
},
"mov eax, es": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #960]"
]
},
"mov rax, es": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #960]"
]
},
"mov ax, ss": {
"ExpectedInstructionCount": 2,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w20, [x28, #964]",
"bfxil x4, x20, #0, #16"
]
},
"mov eax, ss": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #964]"
]
},
"mov rax, ss": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #964]"
]
},
"mov ax, ds": {
"ExpectedInstructionCount": 2,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w20, [x28, #966]",
"bfxil x4, x20, #0, #16"
]
},
"mov eax, ds": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #966]"
]
},
"mov rax, ds": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"ldrh w4, [x28, #966]"
]
},
"mov ax, gs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"and x4, x4, #0xffffffffffff0000"
]
},
"mov eax, gs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"mov w4, #0x0"
]
},
"mov rax, gs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"mov w4, #0x0"
]
},
"mov ax, fs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"and x4, x4, #0xffffffffffff0000"
]
},
"mov eax, fs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"mov w4, #0x0"
]
},
"mov rax, fs": {
"ExpectedInstructionCount": 1,
"Comment": "0x8c",
"ExpectedArm64ASM": [
"mov w4, #0x0"
]
},
"lea ax, [rbx+rcx*1 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [rbx+rcx*1 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7",
"mov w4, w20"
]
},
"lea rax, [rbx+rcx*1 + 0]": {
"ExpectedInstructionCount": 1,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x4, x6, x7"
]
},
"lea ax, [rbx+rcx*2 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #1",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [rbx+rcx*2 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #1",
"mov w4, w20"
]
},
"lea rax, [rbx+rcx*2 + 0]": {
"ExpectedInstructionCount": 1,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x4, x6, x7, lsl #1"
]
},
"lea ax, [rbx+rcx*4 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #2",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [rbx+rcx*4 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #2",
"mov w4, w20"
]
},
"lea rax, [rbx+rcx*4 + 0]": {
"ExpectedInstructionCount": 1,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x4, x6, x7, lsl #2"
]
},
"lea ax, [rbx+rcx*8 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #3",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [rbx+rcx*8 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #3",
"mov w4, w20"
]
},
"lea rax, [rbx+rcx*8 + 0]": {
"ExpectedInstructionCount": 1,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x4, x6, x7, lsl #3"
]
},
"lea ax, [ebx+ecx*1 + 0]": {
"ExpectedInstructionCount": 3,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7",
"mov w20, w20",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [ebx+ecx*1 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7",
"mov w4, w20"
]
},
"lea rax, [ebx+ecx*1 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7",
"mov w4, w20"
]
},
"lea ax, [ebx+ecx*2 + 0]": {
"ExpectedInstructionCount": 3,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #1",
"mov w20, w20",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [ebx+ecx*2 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #1",
"mov w4, w20"
]
},
"lea rax, [ebx+ecx*2 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #1",
"mov w4, w20"
]
},
"lea ax, [ebx+ecx*4 + 0]": {
"ExpectedInstructionCount": 3,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #2",
"mov w20, w20",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [ebx+ecx*4 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #2",
"mov w4, w20"
]
},
"lea rax, [ebx+ecx*4 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #2",
"mov w4, w20"
]
},
"lea ax, [ebx+ecx*8 + 0]": {
"ExpectedInstructionCount": 3,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #3",
"mov w20, w20",
"bfxil x4, x20, #0, #16"
]
},
"lea eax, [ebx+ecx*8 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #3",
"mov w4, w20"
]
},
"lea rax, [ebx+ecx*8 + 0]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8d",
"ExpectedArm64ASM": [
"add x20, x6, x7, lsl #3",
"mov w4, w20"
]
},
"db 0x66, 0x8D, 0xC0": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x8d",
"LEA ax, ax illegal register to register encoding"
],
"ExpectedArm64ASM": [
"mov w20, #0x10000",
"str x20, [x28, #24]",
"mov w0, #0x401",
"str x0, [x28, #1496]",
"ldr x0, [x28, #2968]",
"br x0"
]
},
"db 0x8D, 0xC0": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x8d",
"LEA eax, eax illegal register to register encoding"
],
"ExpectedArm64ASM": [
"mov w20, #0x10000",
"str x20, [x28, #24]",
"mov w0, #0x401",
"str x0, [x28, #1496]",
"ldr x0, [x28, #2968]",
"br x0"
]
},
"db 0x48, 0x8D, 0xC0": {
"ExpectedInstructionCount": 6,
"Comment": [
"0x8d",
"LEA rax, rax illegal register to register encoding"
],
"ExpectedArm64ASM": [
"mov w20, #0x10000",
"str x20, [x28, #24]",
"mov w0, #0x401",
"str x0, [x28, #1496]",
"ldr x0, [x28, #2968]",
"br x0"
]
},
"mov cs, ax": {
"ExpectedInstructionCount": 4,
"Skip": "Yes",
"Comment": "0x8e"
},
"mov es, ax": {
"ExpectedInstructionCount": 12,
"Comment": "0x8e",
"ExpectedArm64ASM": [
"uxth w20, w4",
"strh w20, [x28, #960]",
"ubfx w21, w20, #2, #1",
"and w20, w20, #0xfff8",
"add x0, x28, x21, lsl #3",
"ldr x21, [x0, #1184]",
"ldr x20, [x21, w20, uxtw]",
"lsr x21, x20, #32",
"and w22, w21, #0xff000000",
"orr w20, w22, w20, lsr #16",
"bfi w20, w21, #16, #8",
"str w20, [x28, #976]"
]
},
"mov ss, ax": {
"ExpectedInstructionCount": 12,
"Comment": "0x8e",
"ExpectedArm64ASM": [
"uxth w20, w4",
"strh w20, [x28, #964]",
"ubfx w21, w20, #2, #1",
"and w20, w20, #0xfff8",
"add x0, x28, x21, lsl #3",
"ldr x21, [x0, #1184]",
"ldr x20, [x21, w20, uxtw]",
"lsr x21, x20, #32",
"and w22, w21, #0xff000000",
"orr w20, w22, w20, lsr #16",
"bfi w20, w21, #16, #8",
"str w20, [x28, #984]"
]
},
"mov ds, ax": {
"ExpectedInstructionCount": 12,
"Comment": "0x8e",
"ExpectedArm64ASM": [
"uxth w20, w4",
"strh w20, [x28, #966]",
"ubfx w21, w20, #2, #1",
"and w20, w20, #0xfff8",
"add x0, x28, x21, lsl #3",
"ldr x21, [x0, #1184]",
"ldr x20, [x21, w20, uxtw]",
"lsr x21, x20, #32",
"and w22, w21, #0xff000000",
"orr w20, w22, w20, lsr #16",
"bfi w20, w21, #16, #8",
"str w20, [x28, #988]"
]
},
"mov gs, ax": {
"ExpectedInstructionCount": 0,
"Skip": "Yes",
"Comment": "0x8e"
},
"mov fs, ax": {
"ExpectedInstructionCount": 0,
"Skip": "Yes",
"Comment": "0x8e"
},
"pop word [rax]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8f",
"ExpectedArm64ASM": [
"ldrh w20, [x8], #2",
"strh w20, [x4]"
]
},
"pop qword [rax]": {
"ExpectedInstructionCount": 2,
"Comment": "0x8f",
"ExpectedArm64ASM": [
"ldr x20, [x8], #8",
"str x20, [x4]"
]
},
"xchg ax, bx": {
"ExpectedInstructionCount": 4,
"Comment": "0x90",
"ExpectedArm64ASM": [
"mov x20, x6",
"bfxil x20, x4, #0, #16",
"bfxil x4, x6, #0, #16",
"mov x6, x20"
]
},
"xchg eax, ebx": {
"ExpectedInstructionCount": 3,
"Comment": "0x90",
"ExpectedArm64ASM": [
"mov w20, w4",
"mov w4, w6",
"mov x6, x20"
]
},
"xchg rax, rbx": {
"ExpectedInstructionCount": 3,
"Comment": "0x90",
"ExpectedArm64ASM": [
"mov x20, x6",
"mov x6, x4",
"mov x4, x20"
]
},
"nop": {
"ExpectedInstructionCount": 0,
"Comment": "0x90",
"ExpectedArm64ASM": []
},
"pause": {
"ExpectedInstructionCount": 1,
"Comment": "0xF3 0x90",
"ExpectedArm64ASM": [
"yield"
]
},
"cbw": {
"ExpectedInstructionCount": 2,
"Comment": "0x98",
"ExpectedArm64ASM": [
"sxtb w20, w4",
"bfxil x4, x20, #0, #16"
]
},
"cwde": {
"ExpectedInstructionCount": 1,
"Comment": "0x98",
"ExpectedArm64ASM": [
"sxth w4, w4"
]
},
"cdqe": {
"ExpectedInstructionCount": 1,
"Comment": "0x98",
"ExpectedArm64ASM": [
"sxtw x4, w4"
]
},
"cwd": {
"ExpectedInstructionCount": 2,
"Comment": "0x98",
"ExpectedArm64ASM": [
"sbfx w20, w4, #15, #1",
"bfxil x5, x20, #0, #16"
]
},
"cdq": {
"ExpectedInstructionCount": 1,
"Comment": "0x99",
"ExpectedArm64ASM": [
"asr w5, w4, #31"
]
},
"cqo": {
"ExpectedInstructionCount": 1,
"Comment": "0x99",
"ExpectedArm64ASM": [
"asr x5, x4, #63"
]
},
"fwait": {
"ExpectedInstructionCount": 0,
"Comment": "0x9b",
"ExpectedArm64ASM": []
},
"pushf": {
"ExpectedInstructionCount": 39,
"Comment": "0x9c",
"ExpectedArm64ASM": [
"cset x20, lo",
"eor x21, x27, x26",
"ubfx w21, w21, #4, #1",
"orr x20, x20, x21, lsl #4",
"ldrb w21, [x28, #1016]",
"orr x20, x20, x21, lsl #8",
"ldrb w21, [x28, #1017]",
"orr x20, x20, x21, lsl #9",
"ldrsb x21, [x28, #1018]",
"lsr x21, x21, #63",
"orr x20, x20, x21, lsl #10",
"cset x21, vs",
"orr x20, x20, x21, lsl #11",
"ldrb w21, [x28, #1020]",
"orr x20, x20, x21, lsl #12",
"ldrb w21, [x28, #1022]",
"orr x20, x20, x21, lsl #14",
"ldrb w21, [x28, #1024]",
"orr x20, x20, x21, lsl #16",
"ldrb w21, [x28, #1025]",
"orr x20, x20, x21, lsl #17",
"ldrb w21, [x28, #1026]",
"orr x20, x20, x21, lsl #18",
"ldrb w21, [x28, #1027]",
"orr x20, x20, x21, lsl #19",
"ldrb w21, [x28, #1028]",
"orr x20, x20, x21, lsl #20",
"ldrb w21, [x28, #1029]",
"orr x20, x20, x21, lsl #21",
"eor w0, w26, w26, lsr #4",
"eor w0, w0, w0, lsr #2",
"eor w21, w0, w0, lsr #1",
"orr x21, x21, #0xfffffffffffffffe",
"orn x20, x20, x21, ror #62",
"mrs x21, nzcv",
"and x21, x21, #0xc0000000",
"orr x20, x20, x21, lsr #24",
"orr x20, x20, #0x2",
"str x20, [x8, #-8]!"
]
},
"pushfq": {
"ExpectedInstructionCount": 39,
"Comment": "0x9c",
"ExpectedArm64ASM": [
"cset x20, lo",
"eor x21, x27, x26",
"ubfx w21, w21, #4, #1",
"orr x20, x20, x21, lsl #4",
"ldrb w21, [x28, #1016]",
"orr x20, x20, x21, lsl #8",
"ldrb w21, [x28, #1017]",
"orr x20, x20, x21, lsl #9",
"ldrsb x21, [x28, #1018]",
"lsr x21, x21, #63",
"orr x20, x20, x21, lsl #10",
"cset x21, vs",
"orr x20, x20, x21, lsl #11",
"ldrb w21, [x28, #1020]",
"orr x20, x20, x21, lsl #12",
"ldrb w21, [x28, #1022]",
"orr x20, x20, x21, lsl #14",
"ldrb w21, [x28, #1024]",
"orr x20, x20, x21, lsl #16",
"ldrb w21, [x28, #1025]",
"orr x20, x20, x21, lsl #17",
"ldrb w21, [x28, #1026]",
"orr x20, x20, x21, lsl #18",
"ldrb w21, [x28, #1027]",
"orr x20, x20, x21, lsl #19",
"ldrb w21, [x28, #1028]",
"orr x20, x20, x21, lsl #20",
"ldrb w21, [x28, #1029]",
"orr x20, x20, x21, lsl #21",
"eor w0, w26, w26, lsr #4",
"eor w0, w0, w0, lsr #2",
"eor w21, w0, w0, lsr #1",
"orr x21, x21, #0xfffffffffffffffe",
"orn x20, x20, x21, ror #62",
"mrs x21, nzcv",
"and x21, x21, #0xc0000000",
"orr x20, x20, x21, lsr #24",
"orr x20, x20, #0x2",
"str x20, [x8, #-8]!"
]
},
"popf": {
"ExpectedInstructionCount": 44,
"Comment": "0x9d",
"ExpectedArm64ASM": [
"ldr x20, [x8], #8",
"mov w21, #0x202",
"orr x27, x20, x21",
"mvn w20, w27",
"ubfx x21, x20, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"ubfx w26, w20, #2, #1",
"ubfx x20, x27, #6, #1",
"bfi w22, w20, #30, #1",
"ubfx x20, x27, #7, #1",
"bfi w22, w20, #31, #1",
"ubfx w20, w27, #8, #1",
"ldrb w21, [x28, #1016]",
"and w21, w21, #0xfffffffe",
"mov w23, #0x1",
"cmp x20, #0x0 (0)",
"csel x20, x21, x23, eq",
"strb w20, [x28, #1016]",
"ubfx w20, w27, #9, #1",
"strb w20, [x28, #1017]",
"ubfx w20, w27, #10, #1",
"sub x20, x23, x20, lsl #1",
"ubfx x21, x27, #11, #1",
"bfi w22, w21, #28, #1",
"ubfx w21, w27, #12, #1",
"strb w21, [x28, #1020]",
"ubfx w21, w27, #14, #1",
"strb w21, [x28, #1022]",
"ubfx w21, w27, #16, #1",
"strb w21, [x28, #1024]",
"ubfx w21, w27, #17, #1",
"strb w21, [x28, #1025]",
"ubfx w21, w27, #18, #1",
"strb w21, [x28, #1026]",
"ubfx w21, w27, #19, #1",
"strb w21, [x28, #1027]",
"ubfx w21, w27, #20, #1",
"strb w21, [x28, #1028]",
"ubfx w21, w27, #21, #1",
"strb w21, [x28, #1029]",
"mov w21, #0x10001",
"msr nzcv, x22",
"strb w20, [x28, #1018]"
]
},
"sahf": {
"ExpectedInstructionCount": 14,
"Comment": "0x9e",
"ExpectedArm64ASM": [
"ubfx w20, w4, #8, #8",
"mov w21, #0x28",
"bic x20, x20, x21",
"orr x27, x20, #0x2",
"mvn w20, w27",
"ubfx x21, x20, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"ubfx w26, w20, #2, #1",
"ubfx x20, x27, #6, #1",
"bfi w22, w20, #30, #1",
"ubfx x20, x27, #7, #1",
"bfi w22, w20, #31, #1",
"msr nzcv, x22"
]
},
"lahf": {
"ExpectedInstructionCount": 14,
"Comment": "0x9f",
"ExpectedArm64ASM": [
"cset x20, lo",
"eor x21, x27, x26",
"ubfx w21, w21, #4, #1",
"orr x20, x20, x21, lsl #4",
"eor w0, w26, w26, lsr #4",
"eor w0, w0, w0, lsr #2",
"eor w21, w0, w0, lsr #1",
"orr x21, x21, #0xfffffffffffffffe",
"orn x20, x20, x21, ror #62",
"mrs x21, nzcv",
"and x21, x21, #0xc0000000",
"orr x20, x20, x21, lsr #24",
"orr x20, x20, #0x2",
"bfi x4, x20, #8, #8"
]
},
"mov rax, [qword 0xe0000008]": {
"ExpectedInstructionCount": 3,
"Comment": [
"0xa1"
],
"ExpectedArm64ASM": [
"mov w20, #0x8",
"movk w20, #0xe000, lsl #16",
"ldr x4, [x20]"
]
},
"mov eax, [qword 0xe0000000]": {
"ExpectedInstructionCount": 2,
"Comment": [
"0xa1"
],
"ExpectedArm64ASM": [
"mov w20, #0xe0000000",
"ldr w4, [x20]"
]
},
"mov [qword 0xe0000008], rax": {
"ExpectedInstructionCount": 3,
"Comment": [
"0xa3"
],
"ExpectedArm64ASM": [
"mov w20, #0x8",
"movk w20, #0xe000, lsl #16",
"str x4, [x20]"
]
},
"mov [qword 0xe0000000], eax": {
"ExpectedInstructionCount": 2,
"Comment": [
"0xa3"
],
"ExpectedArm64ASM": [
"mov w20, #0xe0000000",
"str w4, [x20]"
]
},
"movsb": {
"ExpectedInstructionCount": 5,
"Comment": [
"0xa4"
],
"ExpectedArm64ASM": [
"ldrb w20, [x10]",
"strb w20, [x11]",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20",
"add x11, x11, x20"
]
},
"movsw": {
"ExpectedInstructionCount": 5,
"Comment": [
"0xa5"
],
"ExpectedArm64ASM": [
"ldrh w20, [x10]",
"strh w20, [x11]",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20, lsl #1",
"add x11, x11, x20, lsl #1"
]
},
"movsd": {
"ExpectedInstructionCount": 5,
"Comment": [
"0xa5"
],
"ExpectedArm64ASM": [
"ldr w20, [x10]",
"str w20, [x11]",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20, lsl #2",
"add x11, x11, x20, lsl #2"
]
},
"movsq": {
"ExpectedInstructionCount": 5,
"Comment": [
"0xa5"
],
"ExpectedArm64ASM": [
"ldr x20, [x10]",
"str x20, [x11]",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20, lsl #3",
"add x11, x11, x20, lsl #3"
]
},
"rep movsb": {
"ExpectedInstructionCount": 83,
"Comment": "0xa4",
"ExpectedArm64ASM": [
"ldrsb x22, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"mov x2, x10",
"tbnz w22, #1, #+0x94",
"cbz x0, #+0x78",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x54",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x40 (64)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x40 (64)",
"cbz x0, #+0x34",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x14",
"ldrb w3, [x2], #1",
"strb w3, [x1], #1",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"add x21, x0, x2",
"add x20, x1, x2",
"b #+0xa0",
"cbz x0, #+0x88",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x64",
"sub x1, x1, #0x1f (31)",
"sub x2, x2, #0x1f (31)",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x40 (64)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x40 (64)",
"cbz x0, #+0x3c",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x1c",
"add x1, x1, #0x1f (31)",
"add x2, x2, #0x1f (31)",
"ldrb w3, [x2], #-1",
"strb w3, [x1], #-1",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"sub x21, x0, x2",
"sub x20, x1, x2",
"mov w7, #0x0",
"mov x11, x21",
"mov x10, x20"
]
},
"rep movsw": {
"ExpectedInstructionCount": 83,
"Comment": "0xa5",
"ExpectedArm64ASM": [
"ldrsb x22, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"mov x2, x10",
"tbnz w22, #1, #+0x94",
"cbz x0, #+0x78",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x54",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x34",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x14",
"ldrh w3, [x2], #2",
"strh w3, [x1], #2",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"add x21, x0, x2, lsl #1",
"add x20, x1, x2, lsl #1",
"b #+0xa0",
"cbz x0, #+0x88",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x64",
"sub x1, x1, #0x1e (30)",
"sub x2, x2, #0x1e (30)",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x3c",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x1c",
"add x1, x1, #0x1e (30)",
"add x2, x2, #0x1e (30)",
"ldrh w3, [x2], #-2",
"strh w3, [x1], #-2",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"sub x21, x0, x2, lsl #1",
"sub x20, x1, x2, lsl #1",
"mov w7, #0x0",
"mov x11, x21",
"mov x10, x20"
]
},
"rep movsd": {
"ExpectedInstructionCount": 83,
"Comment": "0xa5",
"ExpectedArm64ASM": [
"ldrsb x22, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"mov x2, x10",
"tbnz w22, #1, #+0x94",
"cbz x0, #+0x78",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x54",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x34",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x14",
"ldr w3, [x2], #4",
"str w3, [x1], #4",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"add x21, x0, x2, lsl #2",
"add x20, x1, x2, lsl #2",
"b #+0xa0",
"cbz x0, #+0x88",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x64",
"sub x1, x1, #0x1c (28)",
"sub x2, x2, #0x1c (28)",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x3c",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x1c",
"add x1, x1, #0x1c (28)",
"add x2, x2, #0x1c (28)",
"ldr w3, [x2], #-4",
"str w3, [x1], #-4",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"sub x21, x0, x2, lsl #2",
"sub x20, x1, x2, lsl #2",
"mov w7, #0x0",
"mov x11, x21",
"mov x10, x20"
]
},
"rep movsq": {
"ExpectedInstructionCount": 83,
"Comment": "0xa5",
"ExpectedArm64ASM": [
"ldrsb x22, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"mov x2, x10",
"tbnz w22, #1, #+0x94",
"cbz x0, #+0x78",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x54",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x34",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #32",
"stp q0, q1, [x1], #32",
"sub x0, x0, #0x4 (4)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x4 (4)",
"cbz x0, #+0x14",
"ldr x3, [x2], #8",
"str x3, [x1], #8",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"add x21, x0, x2, lsl #3",
"add x20, x1, x2, lsl #3",
"b #+0xa0",
"cbz x0, #+0x88",
"sub x3, x1, x2",
"tbz x3, #63, #+0x8",
"neg x3, x3",
"sub x3, x3, #0x20 (32)",
"tbnz x3, #63, #+0x64",
"sub x1, x1, #0x18 (24)",
"sub x2, x2, #0x18 (24)",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x44",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x1c",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0x14",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x3c",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x14",
"ldp q0, q1, [x2], #-32",
"stp q0, q1, [x1], #-32",
"sub x0, x0, #0x4 (4)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x4 (4)",
"cbz x0, #+0x1c",
"add x1, x1, #0x18 (24)",
"add x2, x2, #0x18 (24)",
"ldr x3, [x2], #-8",
"str x3, [x1], #-8",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0xc",
"mov x0, x11",
"mov x1, x10",
"mov x2, x7",
"sub x21, x0, x2, lsl #3",
"sub x20, x1, x2, lsl #3",
"mov w7, #0x0",
"mov x11, x21",
"mov x10, x20"
]
},
"cmpsb": {
"ExpectedInstructionCount": 9,
"Comment": [
"0xa6"
],
"ExpectedArm64ASM": [
"ldrb w20, [x11]",
"ldrb w21, [x10]",
"eor x27, x21, x20",
"lsl w0, w21, #24",
"cmp w0, w20, lsl #24",
"sub w26, w21, w20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20",
"add x10, x10, x20"
]
},
"cmpsw": {
"ExpectedInstructionCount": 9,
"Comment": [
"0xa7"
],
"ExpectedArm64ASM": [
"ldrh w20, [x11]",
"ldrh w21, [x10]",
"eor x27, x21, x20",
"lsl w0, w21, #16",
"cmp w0, w20, lsl #16",
"sub w26, w21, w20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #1",
"add x10, x10, x20, lsl #1"
]
},
"cmpsd": {
"ExpectedInstructionCount": 7,
"Comment": [
"0xa7"
],
"ExpectedArm64ASM": [
"ldr w20, [x11]",
"ldr w21, [x10]",
"eor x27, x21, x20",
"subs w26, w21, w20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #2",
"add x10, x10, x20, lsl #2"
]
},
"cmpsq": {
"ExpectedInstructionCount": 7,
"Comment": [
"0xa7"
],
"ExpectedArm64ASM": [
"ldr x20, [x11]",
"ldr x21, [x10]",
"eor x27, x21, x20",
"subs x26, x21, x20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #3",
"add x10, x10, x20, lsl #3"
]
},
"repz cmpsb": {
"ExpectedInstructionCount": 25,
"Comment": "0xa6",
"ExpectedArm64ASM": [
"cbz x7, #+0x64",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldrb w26, [x11]",
"ldrb w27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x1 (1)",
"add x10, x10, #0x1 (1)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"b #+0x20",
"ldrb w26, [x11]",
"ldrb w27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x1 (1)",
"sub x10, x10, #0x1 (1)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"eor x20, x27, x26",
"lsl w0, w27, #24",
"cmp w0, w26, lsl #24",
"sub w26, w27, w26",
"mov x27, x20"
]
},
"repz cmpsw": {
"ExpectedInstructionCount": 25,
"Comment": "0xa7",
"ExpectedArm64ASM": [
"cbz x7, #+0x64",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldrh w26, [x11]",
"ldrh w27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x2 (2)",
"add x10, x10, #0x2 (2)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"b #+0x20",
"ldrh w26, [x11]",
"ldrh w27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x2 (2)",
"sub x10, x10, #0x2 (2)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"eor x20, x27, x26",
"lsl w0, w27, #16",
"cmp w0, w26, lsl #16",
"sub w26, w27, w26",
"mov x27, x20"
]
},
"repz cmpsd": {
"ExpectedInstructionCount": 23,
"Comment": "0xa7",
"ExpectedArm64ASM": [
"cbz x7, #+0x5c",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldr w26, [x11]",
"ldr w27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x4 (4)",
"add x10, x10, #0x4 (4)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"b #+0x20",
"ldr w26, [x11]",
"ldr w27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x4 (4)",
"sub x10, x10, #0x4 (4)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"eor x20, x27, x26",
"subs w26, w27, w26",
"mov x27, x20"
]
},
"repz cmpsq": {
"ExpectedInstructionCount": 23,
"Comment": "0xa7",
"ExpectedArm64ASM": [
"cbz x7, #+0x5c",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldr x26, [x11]",
"ldr x27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x8 (8)",
"add x10, x10, #0x8 (8)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"b #+0x20",
"ldr x26, [x11]",
"ldr x27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x8 (8)",
"sub x10, x10, #0x8 (8)",
"ccmp x27, x26, #nzcv, ne",
"b.eq #-0x18",
"eor x20, x27, x26",
"subs x26, x27, x26",
"mov x27, x20"
]
},
"repnz cmpsb": {
"ExpectedInstructionCount": 25,
"Comment": "0xa6",
"ExpectedArm64ASM": [
"cbz x7, #+0x64",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldrb w26, [x11]",
"ldrb w27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x1 (1)",
"add x10, x10, #0x1 (1)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"b #+0x20",
"ldrb w26, [x11]",
"ldrb w27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x1 (1)",
"sub x10, x10, #0x1 (1)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"eor x20, x27, x26",
"lsl w0, w27, #24",
"cmp w0, w26, lsl #24",
"sub w26, w27, w26",
"mov x27, x20"
]
},
"repnz cmpsw": {
"ExpectedInstructionCount": 25,
"Comment": "0xa7",
"ExpectedArm64ASM": [
"cbz x7, #+0x64",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldrh w26, [x11]",
"ldrh w27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x2 (2)",
"add x10, x10, #0x2 (2)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"b #+0x20",
"ldrh w26, [x11]",
"ldrh w27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x2 (2)",
"sub x10, x10, #0x2 (2)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"eor x20, x27, x26",
"lsl w0, w27, #16",
"cmp w0, w26, lsl #16",
"sub w26, w27, w26",
"mov x27, x20"
]
},
"repnz cmpsd": {
"ExpectedInstructionCount": 23,
"Comment": "0xa7",
"ExpectedArm64ASM": [
"cbz x7, #+0x5c",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldr w26, [x11]",
"ldr w27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x4 (4)",
"add x10, x10, #0x4 (4)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"b #+0x20",
"ldr w26, [x11]",
"ldr w27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x4 (4)",
"sub x10, x10, #0x4 (4)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"eor x20, x27, x26",
"subs w26, w27, w26",
"mov x27, x20"
]
},
"repnz cmpsq": {
"ExpectedInstructionCount": 23,
"Comment": "0xa7",
"ExpectedArm64ASM": [
"cbz x7, #+0x5c",
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"ldr x26, [x11]",
"ldr x27, [x10]",
"subs x7, x7, #0x1 (1)",
"add x11, x11, #0x8 (8)",
"add x10, x10, #0x8 (8)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"b #+0x20",
"ldr x26, [x11]",
"ldr x27, [x10]",
"subs x7, x7, #0x1 (1)",
"sub x11, x11, #0x8 (8)",
"sub x10, x10, #0x8 (8)",
"ccmp x27, x26, #nZcv, ne",
"b.ne #-0x18",
"eor x20, x27, x26",
"subs x26, x27, x26",
"mov x27, x20"
]
},
"test al, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0xa8",
"ExpectedArm64ASM": [
"and w26, w4, #0x1",
"cmp w26, #0x0 (0)"
]
},
"test ax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "0xa9",
"ExpectedArm64ASM": [
"and w26, w4, #0x1",
"cmp w26, #0x0 (0)"
]
},
"test eax, 1": {
"ExpectedInstructionCount": 4,
"Comment": "0xa9",
"ExpectedArm64ASM": [
"ands w26, w4, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test rax, 1": {
"ExpectedInstructionCount": 4,
"Comment": "0xa9",
"ExpectedArm64ASM": [
"ands x26, x4, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test al, -1": {
"ExpectedInstructionCount": 5,
"Comment": "0xa8",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"test ax, -1": {
"ExpectedInstructionCount": 5,
"Comment": "0xa9",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"test eax, -1": {
"ExpectedInstructionCount": 1,
"Comment": "0xa9",
"ExpectedArm64ASM": [
"subs w26, w4, #0x0 (0)"
]
},
"test rax, -1": {
"ExpectedInstructionCount": 1,
"Comment": "0xa9",
"ExpectedArm64ASM": [
"subs x26, x4, #0x0 (0)"
]
},
"stosb": {
"ExpectedInstructionCount": 3,
"Comment": "0xaa",
"ExpectedArm64ASM": [
"strb w4, [x11]",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20"
]
},
"stosw": {
"ExpectedInstructionCount": 3,
"Comment": "0xab",
"ExpectedArm64ASM": [
"strh w4, [x11]",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #1"
]
},
"stosd": {
"ExpectedInstructionCount": 3,
"Comment": "0xab",
"ExpectedArm64ASM": [
"str w4, [x11]",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #2"
]
},
"stosq": {
"ExpectedInstructionCount": 3,
"Comment": "0xab",
"ExpectedArm64ASM": [
"str x4, [x11]",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #3"
]
},
"rep stosb": {
"ExpectedInstructionCount": 55,
"Comment": "0xaa",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"ldrsb x21, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"tbnz w21, #1, #+0x64",
"cbz x0, #+0x58",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x3c",
"dup v1.16b, w20",
"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 w20, [x1], #1",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"add x11, x11, x7",
"b #+0x68",
"cbz x0, #+0x60",
"sub x1, x1, #0x1f (31)",
"sub x0, x0, #0x20 (32)",
"tbnz x0, #63, #+0x3c",
"dup v1.16b, w20",
"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 w20, [x1], #-1",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"sub x11, x11, x7",
"mov w7, #0x0"
]
},
"rep stosw": {
"ExpectedInstructionCount": 55,
"Comment": "0xab",
"ExpectedArm64ASM": [
"uxth w20, w4",
"ldrsb x21, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"tbnz w21, #1, #+0x64",
"cbz x0, #+0x58",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x3c",
"dup v1.8h, w20",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #32",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x2c",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x10",
"strh w20, [x1], #2",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"add x11, x11, x7, lsl #1",
"b #+0x68",
"cbz x0, #+0x60",
"sub x1, x1, #0x1e (30)",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x3c",
"dup v1.8h, w20",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #-32",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x20 (32)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x20 (32)",
"cbz x0, #+0x30",
"sub x0, x0, #0x10 (16)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x14",
"add x1, x1, #0x1e (30)",
"strh w20, [x1], #-2",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"sub x11, x11, x7, lsl #1",
"mov w7, #0x0"
]
},
"rep stosd": {
"ExpectedInstructionCount": 55,
"Comment": "0xab",
"ExpectedArm64ASM": [
"mov w20, w4",
"ldrsb x21, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"tbnz w21, #1, #+0x64",
"cbz x0, #+0x58",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x3c",
"dup v1.4s, w20",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #32",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x2c",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x10",
"str w20, [x1], #4",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"add x11, x11, x7, lsl #2",
"b #+0x68",
"cbz x0, #+0x60",
"sub x1, x1, #0x1c (28)",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x3c",
"dup v1.4s, w20",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #-32",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x10 (16)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x10 (16)",
"cbz x0, #+0x30",
"sub x0, x0, #0x8 (8)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x14",
"add x1, x1, #0x1c (28)",
"str w20, [x1], #-4",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"sub x11, x11, x7, lsl #2",
"mov w7, #0x0"
]
},
"rep stosq": {
"ExpectedInstructionCount": 54,
"Comment": [
"Unrolling the loop for faster memset can be done.",
"Taking advantage of ARM MOPs instructions can be done",
"0xab"
],
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"mov x0, x7",
"mov x1, x11",
"tbnz w20, #1, #+0x64",
"cbz x0, #+0x58",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x3c",
"dup v1.2d, x4",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #32",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x2c",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #32",
"sub x0, x0, #0x4 (4)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x4 (4)",
"cbz x0, #+0x10",
"str x4, [x1], #8",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"add x11, x11, x7, lsl #3",
"b #+0x68",
"cbz x0, #+0x60",
"sub x1, x1, #0x18 (24)",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x3c",
"dup v1.2d, x4",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x14",
"stp q1, q1, [x1], #-32",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x8 (8)",
"tbz x0, #63, #-0xc",
"add x0, x0, #0x8 (8)",
"cbz x0, #+0x30",
"sub x0, x0, #0x4 (4)",
"tbnz x0, #63, #+0x10",
"stp q1, q1, [x1], #-32",
"sub x0, x0, #0x4 (4)",
"tbz x0, #63, #-0x8",
"add x0, x0, #0x4 (4)",
"cbz x0, #+0x14",
"add x1, x1, #0x18 (24)",
"str x4, [x1], #-8",
"sub x0, x0, #0x1 (1)",
"cbnz x0, #-0x8",
"sub x11, x11, x7, lsl #3",
"mov w7, #0x0"
]
},
"lodsb": {
"ExpectedInstructionCount": 4,
"Comment": "0xac",
"ExpectedArm64ASM": [
"ldrb w20, [x10]",
"bfxil x4, x20, #0, #8",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20"
]
},
"lodsw": {
"ExpectedInstructionCount": 4,
"Comment": "0xad",
"ExpectedArm64ASM": [
"ldrh w20, [x10]",
"bfxil x4, x20, #0, #16",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20, lsl #1"
]
},
"lodsd": {
"ExpectedInstructionCount": 3,
"Comment": "0xad",
"ExpectedArm64ASM": [
"ldr w4, [x10]",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20, lsl #2"
]
},
"lodsq": {
"ExpectedInstructionCount": 3,
"Comment": "0xad",
"ExpectedArm64ASM": [
"ldr x4, [x10]",
"ldrsb x20, [x28, #1018]",
"add x10, x10, x20, lsl #3"
]
},
"rep lodsb": {
"ExpectedInstructionCount": 17,
"Comment": "0xac",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x20",
"cbz x7, #+0x18",
"ldrb w20, [x10]",
"bfxil x4, x20, #0, #8",
"sub x7, x7, #0x1 (1)",
"add x10, x10, #0x1 (1)",
"b #-0x14",
"b #+0x1c",
"cbz x7, #+0x18",
"ldrb w20, [x10]",
"bfxil x4, x20, #0, #8",
"sub x7, x7, #0x1 (1)",
"sub x10, x10, #0x1 (1)",
"b #-0x14"
]
},
"rep lodsw": {
"ExpectedInstructionCount": 17,
"Comment": "0xad",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x20",
"cbz x7, #+0x18",
"ldrh w20, [x10]",
"bfxil x4, x20, #0, #16",
"sub x7, x7, #0x1 (1)",
"add x10, x10, #0x2 (2)",
"b #-0x14",
"b #+0x1c",
"cbz x7, #+0x18",
"ldrh w20, [x10]",
"bfxil x4, x20, #0, #16",
"sub x7, x7, #0x1 (1)",
"sub x10, x10, #0x2 (2)",
"b #-0x14"
]
},
"rep lodsd": {
"ExpectedInstructionCount": 15,
"Comment": "0xad",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x1c",
"cbz x7, #+0x14",
"ldr w4, [x10]",
"sub x7, x7, #0x1 (1)",
"add x10, x10, #0x4 (4)",
"b #-0x10",
"b #+0x18",
"cbz x7, #+0x14",
"ldr w4, [x10]",
"sub x7, x7, #0x1 (1)",
"sub x10, x10, #0x4 (4)",
"b #-0x10"
]
},
"rep lodsq": {
"ExpectedInstructionCount": 15,
"Comment": "0xad",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x1c",
"cbz x7, #+0x14",
"ldr x4, [x10]",
"sub x7, x7, #0x1 (1)",
"add x10, x10, #0x8 (8)",
"b #-0x10",
"b #+0x18",
"cbz x7, #+0x14",
"ldr x4, [x10]",
"sub x7, x7, #0x1 (1)",
"sub x10, x10, #0x8 (8)",
"b #-0x10"
]
},
"scasb": {
"ExpectedInstructionCount": 7,
"Comment": "0xae",
"ExpectedArm64ASM": [
"ldrb w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, w20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20"
]
},
"scasw": {
"ExpectedInstructionCount": 7,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrh w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #1"
]
},
"scasd": {
"ExpectedInstructionCount": 5,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldr w20, [x11]",
"eor x27, x4, x20",
"subs w26, w4, w20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #2"
]
},
"scasq": {
"ExpectedInstructionCount": 5,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldr x20, [x11]",
"eor x27, x4, x20",
"subs x26, x4, x20",
"ldrsb x20, [x28, #1018]",
"add x11, x11, x20, lsl #3"
]
},
"repz scasb": {
"ExpectedInstructionCount": 23,
"Comment": "0xae",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x2c",
"cbz x7, #+0x24",
"ldrb w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x1 (1)",
"b.eq #-0x20",
"b #+0x28",
"cbz x7, #+0x24",
"ldrb w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x1 (1)",
"b.eq #-0x20"
]
},
"repz scasw": {
"ExpectedInstructionCount": 23,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x2c",
"cbz x7, #+0x24",
"ldrh w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x2 (2)",
"b.eq #-0x20",
"b #+0x28",
"cbz x7, #+0x24",
"ldrh w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x2 (2)",
"b.eq #-0x20"
]
},
"repz scasd": {
"ExpectedInstructionCount": 19,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"cbz x7, #+0x1c",
"ldr w20, [x11]",
"eor x27, x4, x20",
"subs w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x4 (4)",
"b.eq #-0x18",
"b #+0x20",
"cbz x7, #+0x1c",
"ldr w20, [x11]",
"eor x27, x4, x20",
"subs w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x4 (4)",
"b.eq #-0x18"
]
},
"repz scasq": {
"ExpectedInstructionCount": 19,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"cbz x7, #+0x1c",
"ldr x20, [x11]",
"eor x27, x4, x20",
"subs x26, x4, x20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x8 (8)",
"b.eq #-0x18",
"b #+0x20",
"cbz x7, #+0x1c",
"ldr x20, [x11]",
"eor x27, x4, x20",
"subs x26, x4, x20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x8 (8)",
"b.eq #-0x18"
]
},
"repnz scasb": {
"ExpectedInstructionCount": 23,
"Comment": "0xae",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x2c",
"cbz x7, #+0x24",
"ldrb w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x1 (1)",
"b.ne #-0x20",
"b #+0x28",
"cbz x7, #+0x24",
"ldrb w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x1 (1)",
"b.ne #-0x20"
]
},
"repnz scasw": {
"ExpectedInstructionCount": 23,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x2c",
"cbz x7, #+0x24",
"ldrh w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x2 (2)",
"b.ne #-0x20",
"b #+0x28",
"cbz x7, #+0x24",
"ldrh w20, [x11]",
"eor x27, x4, x20",
"lsl w0, w4, #16",
"cmp w0, w20, lsl #16",
"sub w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x2 (2)",
"b.ne #-0x20"
]
},
"repnz scasd": {
"ExpectedInstructionCount": 19,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"cbz x7, #+0x1c",
"ldr w20, [x11]",
"eor x27, x4, x20",
"subs w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x4 (4)",
"b.ne #-0x18",
"b #+0x20",
"cbz x7, #+0x1c",
"ldr w20, [x11]",
"eor x27, x4, x20",
"subs w26, w4, w20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x4 (4)",
"b.ne #-0x18"
]
},
"repnz scasq": {
"ExpectedInstructionCount": 19,
"Comment": "0xaf",
"ExpectedArm64ASM": [
"ldrsb x20, [x28, #1018]",
"lsr x20, x20, #63",
"cbz x20, #+0x8",
"b #+0x24",
"cbz x7, #+0x1c",
"ldr x20, [x11]",
"eor x27, x4, x20",
"subs x26, x4, x20",
"sub x7, x7, #0x1 (1)",
"add x11, x11, #0x8 (8)",
"b.ne #-0x18",
"b #+0x20",
"cbz x7, #+0x1c",
"ldr x20, [x11]",
"eor x27, x4, x20",
"subs x26, x4, x20",
"sub x7, x7, #0x1 (1)",
"sub x11, x11, #0x8 (8)",
"b.ne #-0x18"
]
},
"mov al, 0x0": {
"ExpectedInstructionCount": 1,
"ExpectedArm64ASM": [
"and x4, x4, #0xffffffffffffff00"
]
},
"xor al, al": {
"ExpectedInstructionCount": 2,
"ExpectedArm64ASM": [
"subs w26, w4, w4",
"and x4, x4, #0xffffffffffffff00"
]
},
"mov ah, 0x0": {
"ExpectedInstructionCount": 1,
"ExpectedArm64ASM": [
"and x4, x4, #0xffffffffffff00ff"
]
},
"xor ah, ah": {
"ExpectedInstructionCount": 2,
"ExpectedArm64ASM": [
"subs w26, w4, w4",
"and x4, x4, #0xffffffffffff00ff"
]
},
"mov al, 0xff": {
"ExpectedInstructionCount": 1,
"Comment": "0xb0",
"ExpectedArm64ASM": [
"orr x4, x4, #0xff"
]
},
"mov al, 0x82": {
"ExpectedInstructionCount": 2,
"Comment": "0xb0",
"ExpectedArm64ASM": [
"mov w20, #0x82",
"bfxil x4, x20, #0, #8"
]
},
"mov ah, 0xff": {
"ExpectedInstructionCount": 1,
"ExpectedArm64ASM": [
"orr x4, x4, #0xff00"
]
},
"mov ax, 0xffff": {
"ExpectedInstructionCount": 1,
"Comment": "0xb8",
"ExpectedArm64ASM": [
"orr x4, x4, #0xffff"
]
},
"mov ax, 0x4243": {
"ExpectedInstructionCount": 2,
"Comment": "0xb8",
"ExpectedArm64ASM": [
"mov w20, #0x4243",
"bfxil x4, x20, #0, #16"
]
},
"mov ax, 0x0": {
"ExpectedInstructionCount": 1,
"ExpectedArm64ASM": [
"and x4, x4, #0xffffffffffff0000"
]
},
"xor ax, ax": {
"ExpectedInstructionCount": 2,
"ExpectedArm64ASM": [
"subs w26, w4, w4",
"and x4, x4, #0xffffffffffff0000"
]
},
"mov eax, 0x0": {
"ExpectedInstructionCount": 1,
"ExpectedArm64ASM": [
"mov w4, #0x0"
]
},
"xor eax, eax": {
"ExpectedInstructionCount": 2,
"ExpectedArm64ASM": [
"subs w26, w4, w4",
"mov w4, #0x0"
]
},
"mov eax, 0xffffffff": {
"ExpectedInstructionCount": 1,
"Comment": [
"movz+movk doesn't turn in to bitfield move",
"0xb8"
],
"ExpectedArm64ASM": [
"mov w4, #0xffffffff"
]
},
"mov eax, 0x44454647": {
"ExpectedInstructionCount": 2,
"Comment": "0xb8",
"ExpectedArm64ASM": [
"mov w4, #0x4647",
"movk w4, #0x4445, lsl #16"
]
},
"mov rax, 0x0": {
"ExpectedInstructionCount": 1,
"Comment": "0xb0",
"ExpectedArm64ASM": [
"mov w4, #0x0"
]
},
"xor rax, rax": {
"ExpectedInstructionCount": 2,
"Comment": "0xb0",
"ExpectedArm64ASM": [
"subs w26, w4, w4",
"mov w4, #0x0"
]
},
"mov rax, 0xffffffffffffffff": {
"ExpectedInstructionCount": 1,
"Comment": "0xb8",
"ExpectedArm64ASM": [
"mov x4, #0xffffffffffffffff"
]
},
"mov rax, 0x5152535455565758": {
"ExpectedInstructionCount": 4,
"Comment": "0xb8",
"ExpectedArm64ASM": [
"mov x4, #0x5758",
"movk x4, #0x5556, lsl #16",
"movk x4, #0x5354, lsl #32",
"movk x4, #0x5152, lsl #48"
]
},
"xlat": {
"ExpectedInstructionCount": 3,
"Comment": "0xd7",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"ldrb w20, [x6, x20, sxtx]",
"bfxil x4, x20, #0, #8"
]
},
"retf 0x1234": {
"ExpectedInstructionCount": 15,
"Comment": "0xca",
"ExpectedArm64ASM": [
"mov x20, x8",
"ldp w21, w22, [x20], #8",
"mov w23, #0x1234",
"add x8, x20, x23",
"strh w22, [x28, #962]",
"ubfx w20, w22, #2, #1",
"and w22, w22, #0xfff8",
"add x0, x28, x20, lsl #3",
"ldr x20, [x0, #1184]",
"ldr x20, [x20, w22, uxtw]",
"lsr x22, x20, #32",
"and w23, w22, #0xff000000",
"orr w20, w23, w20, lsr #16",
"bfi w20, w22, #16, #8",
"str w20, [x28, #980]"
]
},
"retf": {
"ExpectedInstructionCount": 12,
"Comment": "0xcb",
"ExpectedArm64ASM": [
"ldp w20, w21, [x8], #8",
"strh w21, [x28, #962]",
"ubfx w22, w21, #2, #1",
"and w21, w21, #0xfff8",
"add x0, x28, x22, lsl #3",
"ldr x22, [x0, #1184]",
"ldr x21, [x22, w21, uxtw]",
"lsr x22, x21, #32",
"and w23, w22, #0xff000000",
"orr w21, w23, w21, lsr #16",
"bfi w21, w22, #16, #8",
"str w21, [x28, #980]"
]
},
"cmc": {
"ExpectedInstructionCount": 3,
"Comment": "0xf5",
"ExpectedArm64ASM": [
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"clc": {
"ExpectedInstructionCount": 4,
"Comment": "0xf8",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"stc": {
"ExpectedInstructionCount": 4,
"Comment": "0xf9",
"ExpectedArm64ASM": [
"mov w20, #0x0",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"cli": {
"ExpectedInstructionCount": 7,
"Skip": "Yes",
"Comment": "0xfa"
},
"sti": {
"ExpectedInstructionCount": 7,
"Skip": "Yes",
"Comment": "0xfb"
},
"cld": {
"ExpectedInstructionCount": 2,
"Comment": "0xfc",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"strb w20, [x28, #1018]"
]
},
"std": {
"ExpectedInstructionCount": 2,
"Comment": "0xfd",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"strb w20, [x28, #1018]"
]
}
}
}