mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 13:00:15 +02:00
1680 lines
44 KiB
JSON
1680 lines
44 KiB
JSON
{
|
|
"Features": {
|
|
"Bitness": 64,
|
|
"EnabledHostFeatures": [],
|
|
"DisabledHostFeatures": [
|
|
"SVE128",
|
|
"SVE256",
|
|
"AFP",
|
|
"FLAGM",
|
|
"FLAGM2"
|
|
],
|
|
"BinaryCacheVersion": 4
|
|
},
|
|
"Instructions": {
|
|
"lock add byte [rax], cl": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "0x00",
|
|
"ExpectedArm64ASM": [
|
|
"ldaddalb w7, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"lsl w0, w20, #24",
|
|
"cmn w0, w7, lsl #24",
|
|
"add w26, w20, w7",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add word [rax], cx": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "0x01",
|
|
"ExpectedArm64ASM": [
|
|
"ldaddalh w7, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"lsl w0, w20, #16",
|
|
"cmn w0, w7, lsl #16",
|
|
"add w26, w20, w7",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x01",
|
|
"ExpectedArm64ASM": [
|
|
"ldaddal w7, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"adds w26, w20, w7",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or byte [rax], cl": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x08",
|
|
"ExpectedArm64ASM": [
|
|
"ldsetalb w7, w20, [x4]",
|
|
"orr w26, w20, w7",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or word [rax], cx": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x09",
|
|
"ExpectedArm64ASM": [
|
|
"ldsetalh w7, w20, [x4]",
|
|
"orr w26, w20, w7",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Comment": "0x09",
|
|
"ExpectedArm64ASM": [
|
|
"ldsetal w7, w20, [x4]",
|
|
"orr w20, w20, w7",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock adc byte [rax], cl": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Comment": "0x10",
|
|
"ExpectedArm64ASM": [
|
|
"cinc w20, w7, lo",
|
|
"ldaddalb w20, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"uxtb x21, w7",
|
|
"cinc w22, w21, lo",
|
|
"add w23, w20, w22",
|
|
"uxtb w26, w23",
|
|
"cmp w26, 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",
|
|
"bic w20, w20, w21",
|
|
"ubfx x20, x20, #7, #1",
|
|
"bfi w23, w20, #28, #1",
|
|
"msr nzcv, x23"
|
|
]
|
|
},
|
|
"lock adc word [rax], cx": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Comment": "0x11",
|
|
"ExpectedArm64ASM": [
|
|
"cinc w20, w7, lo",
|
|
"ldaddalh w20, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"uxth x21, w7",
|
|
"cinc w22, w21, lo",
|
|
"add w23, w20, w22",
|
|
"uxth w26, w23",
|
|
"cmp w26, 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",
|
|
"bic w20, w20, w21",
|
|
"ubfx x20, x20, #15, #1",
|
|
"bfi w23, w20, #28, #1",
|
|
"msr nzcv, x23"
|
|
]
|
|
},
|
|
"lock adc dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "0x11",
|
|
"ExpectedArm64ASM": [
|
|
"cinc w20, w7, lo",
|
|
"ldaddal w20, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"adcs w26, w20, w7",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock sbb byte [rax], cl": {
|
|
"ExpectedInstructionCount": 20,
|
|
"Comment": "0x18",
|
|
"ExpectedArm64ASM": [
|
|
"cinc w20, w7, lo",
|
|
"neg w1, w20",
|
|
"ldaddalb w1, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"uxtb w20, w20",
|
|
"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",
|
|
"msr nzcv, x23"
|
|
]
|
|
},
|
|
"lock sbb word [rax], cx": {
|
|
"ExpectedInstructionCount": 20,
|
|
"Comment": "0x19",
|
|
"ExpectedArm64ASM": [
|
|
"cinc w20, w7, lo",
|
|
"neg w1, w20",
|
|
"ldaddalh w1, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"uxth w20, w20",
|
|
"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",
|
|
"msr nzcv, x23"
|
|
]
|
|
},
|
|
"lock sbb dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "0x19",
|
|
"ExpectedArm64ASM": [
|
|
"cinc w20, w7, lo",
|
|
"neg w1, w20",
|
|
"ldaddal w1, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"sbcs w26, w20, w7"
|
|
]
|
|
},
|
|
"lock and byte [rax], cl": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "0x20",
|
|
"ExpectedArm64ASM": [
|
|
"mvn w1, w7",
|
|
"ldclralb w1, w20, [x4]",
|
|
"and w26, w20, w7",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and word [rax], cx": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "0x21",
|
|
"ExpectedArm64ASM": [
|
|
"mvn w1, w7",
|
|
"ldclralh w1, w20, [x4]",
|
|
"and w26, w20, w7",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x21",
|
|
"ExpectedArm64ASM": [
|
|
"mvn w1, w7",
|
|
"ldclral w1, w20, [x4]",
|
|
"ands w26, w20, w7",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock sub byte [rax], cl": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x28",
|
|
"ExpectedArm64ASM": [
|
|
"neg w1, w7",
|
|
"ldaddalb w1, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"lsl w0, w20, #24",
|
|
"cmp w0, w7, lsl #24",
|
|
"sub w26, w20, w7"
|
|
]
|
|
},
|
|
"lock sub word [rax], cx": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x28",
|
|
"ExpectedArm64ASM": [
|
|
"neg w1, w7",
|
|
"ldaddalh w1, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"lsl w0, w20, #16",
|
|
"cmp w0, w7, lsl #16",
|
|
"sub w26, w20, w7"
|
|
]
|
|
},
|
|
"lock sub dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "0x29",
|
|
"ExpectedArm64ASM": [
|
|
"neg w1, w7",
|
|
"ldaddal w1, w20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"subs w26, w20, w7"
|
|
]
|
|
},
|
|
"lock xor byte [rax], cl": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x30",
|
|
"ExpectedArm64ASM": [
|
|
"ldeoralb w7, w20, [x4]",
|
|
"eor w26, w20, w7",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor word [rax], cx": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x31",
|
|
"ExpectedArm64ASM": [
|
|
"ldeoralh w7, w20, [x4]",
|
|
"eor w26, w20, w7",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Comment": "0x31",
|
|
"ExpectedArm64ASM": [
|
|
"ldeoral w7, w20, [x4]",
|
|
"eor w20, w20, w7",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock add qword [rax], rcx": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "0x01",
|
|
"ExpectedArm64ASM": [
|
|
"ldaddal x7, x20, [x4]",
|
|
"eor x27, x20, x7",
|
|
"adds x26, x20, x7",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"xchg byte [rax], cl": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Comment": "0x86",
|
|
"ExpectedArm64ASM": [
|
|
"swpalb w7, w20, [x4]",
|
|
"bfxil x7, x20, #0, #8"
|
|
]
|
|
},
|
|
"xchg word [rax], cx": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Comment": "0x87",
|
|
"ExpectedArm64ASM": [
|
|
"swpalh w7, w20, [x4]",
|
|
"bfxil x7, x20, #0, #16"
|
|
]
|
|
},
|
|
"xchg dword [rax], ecx": {
|
|
"ExpectedInstructionCount": 1,
|
|
"Comment": "0x87",
|
|
"ExpectedArm64ASM": [
|
|
"swpal w7, w7, [x4]"
|
|
]
|
|
},
|
|
"xchg qword [rax], rcx": {
|
|
"ExpectedInstructionCount": 1,
|
|
"Comment": "0x87",
|
|
"ExpectedArm64ASM": [
|
|
"swpal x7, x7, [x4]"
|
|
]
|
|
},
|
|
"xadd byte [rax], bl": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "0x0f 0xc0",
|
|
"ExpectedArm64ASM": [
|
|
"uxtb w20, w6",
|
|
"ldaddalb w20, w21, [x4]",
|
|
"eor x27, x21, x20",
|
|
"lsl w0, w21, #24",
|
|
"cmn w0, w20, lsl #24",
|
|
"add w26, w21, w20",
|
|
"bfxil x6, x21, #0, #8",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"xadd word [rax], bx": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "0x0f 0xc1",
|
|
"ExpectedArm64ASM": [
|
|
"uxth w20, w6",
|
|
"ldaddalh w20, w21, [x4]",
|
|
"eor x27, x21, x20",
|
|
"lsl w0, w21, #16",
|
|
"cmn w0, w20, lsl #16",
|
|
"add w26, w21, w20",
|
|
"bfxil x6, x21, #0, #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"xadd dword [rax], ebx": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "0x0f 0xc1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, w6",
|
|
"ldaddal w20, w6, [x4]",
|
|
"eor x27, x6, x20",
|
|
"adds w26, w6, w20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"xadd qword [rax], rbx": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "0x0f 0xc1",
|
|
"ExpectedArm64ASM": [
|
|
"ldaddal x6, x20, [x4]",
|
|
"eor x27, x20, x6",
|
|
"adds x26, x20, x6",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"mov x6, x20"
|
|
]
|
|
},
|
|
"lock add byte [rax], 1": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x80 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddalb w20, w27, [x4]",
|
|
"lsl w0, w27, #24",
|
|
"cmn w0, w20, lsl #24",
|
|
"add w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Comment": "GROUP1 0x80 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"ldaddalb w20, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"lsl w0, w21, #24",
|
|
"cmn w0, w20, lsl #24",
|
|
"add w26, w21, #0xff (255)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x81 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldaddalh w20, w27, [x4]",
|
|
"lsl w0, w27, #16",
|
|
"cmn w0, w20, lsl #16",
|
|
"add w26, w27, #0x100 (256)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Comment": "GROUP1 0x81 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"ldaddalh w20, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"lsl w0, w21, #16",
|
|
"cmn w0, w20, lsl #16",
|
|
"add w26, w21, w20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x81 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldaddal w20, w27, [x4]",
|
|
"adds w26, w27, #0x100 (256)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"ldaddal w20, w20, [x4]",
|
|
"mvn w27, w20",
|
|
"subs w26, w20, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x81 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldaddal x20, x27, [x4]",
|
|
"adds x26, x27, #0x100 (256)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x81 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"ldaddal x20, x27, [x4]",
|
|
"adds x26, x27, x20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add word [rax], 1": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x83 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddalh w20, w27, [x4]",
|
|
"lsl w0, w27, #16",
|
|
"cmn w0, w20, lsl #16",
|
|
"add w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add dword [rax], 1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x83 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddal w20, w27, [x4]",
|
|
"adds w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock add qword [rax], 1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x83 /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddal x20, x27, [x4]",
|
|
"adds x26, x27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or byte [rax], 1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x80 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldsetalb w20, w20, [x4]",
|
|
"orr w26, w20, #0x1",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x80 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"ldsetalb w20, w20, [x4]",
|
|
"orr w26, w20, #0xff",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldsetalh w20, w20, [x4]",
|
|
"orr w26, w20, #0x100",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"ldsetalh w20, w20, [x4]",
|
|
"orr w26, w20, #0xffff",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldsetal w20, w20, [x4]",
|
|
"orr w20, w20, #0x100",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock or dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"ldsetal w20, w21, [x4]",
|
|
"orr w20, w21, w20",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock or qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldsetal x20, x20, [x4]",
|
|
"orr x20, x20, #0x100",
|
|
"subs x26, x20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock or qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"ldsetal x20, x20, [x4]",
|
|
"orr x20, x20, #0xffffffff80000001",
|
|
"subs x26, x20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock or word [rax], 1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x83 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldsetalh w20, w20, [x4]",
|
|
"orr w26, w20, #0x1",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock or dword [rax], 1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x83 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldsetal w20, w20, [x4]",
|
|
"orr w20, w20, #0x1",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock or qword [rax], 1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x83 /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldsetal x20, x20, [x4]",
|
|
"orr x20, x20, #0x1",
|
|
"subs x26, x20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock adc byte [rax], 1": {
|
|
"ExpectedInstructionCount": 15,
|
|
"Comment": "GROUP1 0x80 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc w21, w20, lo",
|
|
"ldaddalb w21, w27, [x4]",
|
|
"cinc w20, w20, lo",
|
|
"add w21, w27, 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, w27",
|
|
"ubfx x20, x20, #7, #1",
|
|
"bfi w21, w20, #28, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
},
|
|
"lock adc byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 16,
|
|
"Comment": "GROUP1 0x80 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"cinc w21, w20, lo",
|
|
"ldaddalb w21, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"cinc w20, w20, lo",
|
|
"add w22, w21, w20",
|
|
"uxtb w26, w22",
|
|
"cmp w26, 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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock adc word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 15,
|
|
"Comment": "GROUP1 0x81 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"cinc w21, w20, lo",
|
|
"ldaddalh w21, w27, [x4]",
|
|
"cinc w20, w20, lo",
|
|
"add w21, w27, 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, w27",
|
|
"ubfx x20, x20, #15, #1",
|
|
"bfi w21, w20, #28, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
},
|
|
"lock adc word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 16,
|
|
"Comment": "GROUP1 0x81 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"cinc w21, w20, lo",
|
|
"ldaddalh w21, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"cinc w20, w20, lo",
|
|
"add w22, w21, w20",
|
|
"uxth w26, w22",
|
|
"cmp w26, 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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock adc dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP1 0x81 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"cinc w21, w20, lo",
|
|
"ldaddal w21, w27, [x4]",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"adcs w26, w27, w20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock adc dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Comment": "GROUP1 0x81 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"cinc w21, w20, lo",
|
|
"ldaddal w21, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"mrs x22, nzcv",
|
|
"eor w22, w22, #0x20000000",
|
|
"msr nzcv, x22",
|
|
"adcs w26, w21, w20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock adc qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP1 0x81 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"cinc x21, x20, lo",
|
|
"ldaddal x21, x27, [x4]",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"adcs x26, x27, x20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock adc qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP1 0x81 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"cinc x21, x20, lo",
|
|
"ldaddal x21, x27, [x4]",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"adcs x26, x27, x20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock adc word [rax], 1": {
|
|
"ExpectedInstructionCount": 15,
|
|
"Comment": "GROUP1 0x83 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc w21, w20, lo",
|
|
"ldaddalh w21, w27, [x4]",
|
|
"cinc w20, w20, lo",
|
|
"add w21, w27, 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, w27",
|
|
"ubfx x20, x20, #15, #1",
|
|
"bfi w21, w20, #28, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
},
|
|
"lock adc dword [rax], 1": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP1 0x83 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc w21, w20, lo",
|
|
"ldaddal w21, w27, [x4]",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"adcs w26, w27, w20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock adc qword [rax], 1": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP1 0x83 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc x21, x20, lo",
|
|
"ldaddal x21, x27, [x4]",
|
|
"mrs x21, nzcv",
|
|
"eor w21, w21, #0x20000000",
|
|
"msr nzcv, x21",
|
|
"adcs x26, x27, x20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock sbb byte [rax], 1": {
|
|
"ExpectedInstructionCount": 17,
|
|
"Comment": "GROUP1 0x80 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddalb w1, w27, [x4]",
|
|
"uxtb w21, w27",
|
|
"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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock sbb byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Comment": "GROUP1 0x80 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddalb w1, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"uxtb w21, w21",
|
|
"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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock sbb word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 17,
|
|
"Comment": "GROUP1 0x81 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddalh w1, w27, [x4]",
|
|
"uxth w21, w27",
|
|
"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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock sbb word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Comment": "GROUP1 0x81 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddalh w1, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"uxth w21, w21",
|
|
"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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock sbb dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "GROUP1 0x81 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddal w1, w27, [x4]",
|
|
"sbcs w26, w27, w20"
|
|
]
|
|
},
|
|
"lock sbb dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x81 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddal w1, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"sbcs w26, w21, w20"
|
|
]
|
|
},
|
|
"lock sbb qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "GROUP1 0x81 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"cinc x21, x20, lo",
|
|
"neg x1, x21",
|
|
"ldaddal x1, x27, [x4]",
|
|
"sbcs x26, x27, x20"
|
|
]
|
|
},
|
|
"lock sbb qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "GROUP1 0x81 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"cinc x21, x20, lo",
|
|
"neg x1, x21",
|
|
"ldaddal x1, x27, [x4]",
|
|
"sbcs x26, x27, x20"
|
|
]
|
|
},
|
|
"lock sbb word [rax], 1": {
|
|
"ExpectedInstructionCount": 17,
|
|
"Comment": "GROUP1 0x83 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddalh w1, w27, [x4]",
|
|
"uxth w21, w27",
|
|
"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",
|
|
"msr nzcv, x22"
|
|
]
|
|
},
|
|
"lock sbb dword [rax], 1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "GROUP1 0x83 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc w21, w20, lo",
|
|
"neg w1, w21",
|
|
"ldaddal w1, w27, [x4]",
|
|
"sbcs w26, w27, w20"
|
|
]
|
|
},
|
|
"lock sbb qword [rax], 1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "GROUP1 0x83 /3",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"cinc x21, x20, lo",
|
|
"neg x1, x21",
|
|
"ldaddal x1, x27, [x4]",
|
|
"sbcs x26, x27, x20"
|
|
]
|
|
},
|
|
"lock and byte [rax], 1": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x80 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"mvn w1, w20",
|
|
"ldclralb w1, w20, [x4]",
|
|
"and w26, w20, #0x1",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x80 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"mvn w1, w20",
|
|
"ldclralb w1, w20, [x4]",
|
|
"and w26, w20, #0xff",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x81 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"mvn w1, w20",
|
|
"ldclralh w1, w20, [x4]",
|
|
"and w26, w20, #0x100",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x81 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"mvn w1, w20",
|
|
"ldclralh w1, w20, [x4]",
|
|
"and w26, w20, #0xffff",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"mvn w1, w20",
|
|
"ldclral w1, w20, [x4]",
|
|
"ands w26, w20, #0x100",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"mvn w1, w20",
|
|
"ldclral w1, w21, [x4]",
|
|
"ands w26, w21, w20",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"mvn x1, x20",
|
|
"ldclral x1, x20, [x4]",
|
|
"ands x26, x20, #0x100",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"mvn x1, x20",
|
|
"ldclral x1, x20, [x4]",
|
|
"ands x26, x20, #0xffffffff80000001",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and word [rax], 1": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP1 0x83 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"mvn w1, w20",
|
|
"ldclralh w1, w20, [x4]",
|
|
"and w26, w20, #0x1",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and dword [rax], 1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x83 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"mvn w1, w20",
|
|
"ldclral w1, w20, [x4]",
|
|
"ands w26, w20, #0x1",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock and qword [rax], 1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x83 /4",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"mvn x1, x20",
|
|
"ldclral x1, x20, [x4]",
|
|
"ands x26, x20, #0x1",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock sub byte [rax], 1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x80 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"neg w1, w20",
|
|
"ldaddalb w1, w27, [x4]",
|
|
"lsl w0, w27, #24",
|
|
"cmp w0, w20, lsl #24",
|
|
"sub w26, w27, #0x1 (1)"
|
|
]
|
|
},
|
|
"lock sub byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x80 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"neg w1, w20",
|
|
"ldaddalb w1, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"lsl w0, w21, #24",
|
|
"cmp w0, w20, lsl #24",
|
|
"sub w26, w21, #0xff (255)"
|
|
]
|
|
},
|
|
"lock sub word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x81 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"neg w1, w20",
|
|
"ldaddalh w1, w27, [x4]",
|
|
"lsl w0, w27, #16",
|
|
"cmp w0, w20, lsl #16",
|
|
"sub w26, w27, #0x100 (256)"
|
|
]
|
|
},
|
|
"lock sub word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"neg w1, w20",
|
|
"ldaddalh w1, w21, [x4]",
|
|
"mvn w27, w21",
|
|
"lsl w0, w21, #16",
|
|
"cmp w0, w20, lsl #16",
|
|
"sub w26, w21, w20"
|
|
]
|
|
},
|
|
"lock sub dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"neg w1, w20",
|
|
"ldaddal w1, w27, [x4]",
|
|
"subs w26, w27, #0x100 (256)"
|
|
]
|
|
},
|
|
"lock sub dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Comment": "GROUP1 0x81 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"neg w1, w20",
|
|
"ldaddal w1, w20, [x4]",
|
|
"mvn w27, w20",
|
|
"adds w26, w20, #0x1 (1)"
|
|
]
|
|
},
|
|
"lock sub qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"neg x1, x20",
|
|
"ldaddal x1, x27, [x4]",
|
|
"subs x26, x27, #0x100 (256)"
|
|
]
|
|
},
|
|
"lock sub qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"neg x1, x20",
|
|
"ldaddal x1, x27, [x4]",
|
|
"subs x26, x27, x20"
|
|
]
|
|
},
|
|
"lock sub word [rax], 1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Comment": "GROUP1 0x83 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"neg w1, w20",
|
|
"ldaddalh w1, w27, [x4]",
|
|
"lsl w0, w27, #16",
|
|
"cmp w0, w20, lsl #16",
|
|
"sub w26, w27, #0x1 (1)"
|
|
]
|
|
},
|
|
"lock sub dword [rax], 1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x83 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"neg w1, w20",
|
|
"ldaddal w1, w27, [x4]",
|
|
"subs w26, w27, #0x1 (1)"
|
|
]
|
|
},
|
|
"lock sub qword [rax], 1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x83 /5",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"neg x1, x20",
|
|
"ldaddal x1, x27, [x4]",
|
|
"subs x26, x27, #0x1 (1)"
|
|
]
|
|
},
|
|
"lock xor byte [rax], 1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x80 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldeoralb w20, w20, [x4]",
|
|
"eor w26, w20, #0x1",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor byte [rax], 0xFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x80 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"ldeoralb w20, w20, [x4]",
|
|
"eor w26, w20, #0xff",
|
|
"cmn wzr, w26, lsl #24",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor word [rax], 0x100": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldeoralh w20, w20, [x4]",
|
|
"eor w26, w20, #0x100",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor word [rax], 0xFFFF": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x81 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"ldeoralh w20, w20, [x4]",
|
|
"eor w26, w20, #0xffff",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor dword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldeoral w20, w20, [x4]",
|
|
"eor w20, w20, #0x100",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock xor dword [rax], 0xFFFFFFFF": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"ldeoral w20, w21, [x4]",
|
|
"eor w20, w21, w20",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock xor qword [rax], 0x100": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x100",
|
|
"ldeoral x20, x20, [x4]",
|
|
"eor x20, x20, #0x100",
|
|
"subs x26, x20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock xor qword [rax], -2147483647": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x81 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffff80000001",
|
|
"ldeoral x20, x20, [x4]",
|
|
"eor x20, x20, #0xffffffff80000001",
|
|
"subs x26, x20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock xor word [rax], 1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP1 0x83 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldeoralh w20, w20, [x4]",
|
|
"eor w26, w20, #0x1",
|
|
"cmn wzr, w26, lsl #16",
|
|
"mrs x20, nzcv",
|
|
"eor w20, w20, #0x20000000",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock xor dword [rax], 1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x83 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldeoral w20, w20, [x4]",
|
|
"eor w20, w20, #0x1",
|
|
"subs w26, w20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock xor qword [rax], 1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Comment": "GROUP1 0x83 /6",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldeoral x20, x20, [x4]",
|
|
"eor x20, x20, #0x1",
|
|
"subs x26, x20, #0x0 (0)"
|
|
]
|
|
},
|
|
"lock dec byte [rax]": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP3 0xfe /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"ldaddalb w20, w27, [x4]",
|
|
"mov w20, #0x1",
|
|
"cset x21, hs",
|
|
"lsl w0, w27, #24",
|
|
"cmp w0, w20, lsl #24",
|
|
"sub w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"bfi w20, w21, #29, #1",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock not byte [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Comment": "GROUP2 0xf6 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xff",
|
|
"ldeoralb w20, w20, [x4]"
|
|
]
|
|
},
|
|
"lock not word [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Comment": "GROUP2 0xf7 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"ldeoralh w20, w20, [x4]"
|
|
]
|
|
},
|
|
"lock not dword [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Comment": "GROUP2 0xf7 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"ldeoral w20, w20, [x4]"
|
|
]
|
|
},
|
|
"lock not qword [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Comment": "GROUP2 0xf7 /2",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffffffffffff",
|
|
"ldeoral x20, x20, [x4]"
|
|
]
|
|
},
|
|
"lock neg byte [rax]": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Comment": "GROUP2 0xf6 /3",
|
|
"ExpectedArm64ASM": [
|
|
"ldrb w1, [x4]",
|
|
"mov w3, w1",
|
|
"neg w2, w1",
|
|
"casalb w1, w2, [x4]",
|
|
"sub w2, w1, w3",
|
|
"cbnz w2, #-0x10",
|
|
"mov w27, w1",
|
|
"cmp wzr, w27, lsl #24",
|
|
"neg w26, w27"
|
|
]
|
|
},
|
|
"lock neg word [rax]": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Comment": "GROUP2 0xf7 /3",
|
|
"ExpectedArm64ASM": [
|
|
"ldrh w1, [x4]",
|
|
"mov w3, w1",
|
|
"neg w2, w1",
|
|
"casalh w1, w2, [x4]",
|
|
"sub w2, w1, w3",
|
|
"cbnz w2, #-0x10",
|
|
"mov w27, w1",
|
|
"cmp wzr, w27, lsl #16",
|
|
"neg w26, w27"
|
|
]
|
|
},
|
|
"lock neg dword [rax]": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP2 0xf7 /3",
|
|
"ExpectedArm64ASM": [
|
|
"ldr w1, [x4]",
|
|
"mov w3, w1",
|
|
"neg w2, w1",
|
|
"casal w1, w2, [x4]",
|
|
"sub w2, w1, w3",
|
|
"cbnz w2, #-0x10",
|
|
"mov w27, w1",
|
|
"negs w26, w27"
|
|
]
|
|
},
|
|
"lock neg qword [rax]": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Comment": "GROUP2 0xf7 /3",
|
|
"ExpectedArm64ASM": [
|
|
"ldr x1, [x4]",
|
|
"mov x3, x1",
|
|
"neg x2, x1",
|
|
"casal x1, x2, [x4]",
|
|
"sub x2, x1, x3",
|
|
"cbnz x2, #-0x10",
|
|
"mov x27, x1",
|
|
"negs x26, x27"
|
|
]
|
|
},
|
|
"lock dec word [rax]": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Comment": "GROUP4 0xfe /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffff",
|
|
"ldaddalh w20, w27, [x4]",
|
|
"mov w20, #0x1",
|
|
"cset x21, hs",
|
|
"lsl w0, w27, #16",
|
|
"cmp w0, w20, lsl #16",
|
|
"sub w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"bfi w20, w21, #29, #1",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock dec dword [rax]": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP4 0xfe /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0xffffffff",
|
|
"ldaddal w20, w27, [x4]",
|
|
"cset x20, hs",
|
|
"subs w26, w27, #0x1 (1)",
|
|
"mrs x21, nzcv",
|
|
"bfi w21, w20, #29, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
},
|
|
"lock dec qword [rax]": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP4 0xfe /1",
|
|
"ExpectedArm64ASM": [
|
|
"mov x20, #0xffffffffffffffff",
|
|
"ldaddal x20, x27, [x4]",
|
|
"cset x20, hs",
|
|
"subs x26, x27, #0x1 (1)",
|
|
"mrs x21, nzcv",
|
|
"bfi w21, w20, #29, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
},
|
|
"lock inc byte [rax]": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Comment": "GROUP4 0xfe /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddalb w20, w27, [x4]",
|
|
"cset x21, hs",
|
|
"lsl w0, w27, #24",
|
|
"cmn w0, w20, lsl #24",
|
|
"add w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"bfi w20, w21, #29, #1",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock inc word [rax]": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Comment": "GROUP4 0xfe /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddalh w20, w27, [x4]",
|
|
"cset x21, hs",
|
|
"lsl w0, w27, #16",
|
|
"cmn w0, w20, lsl #16",
|
|
"add w26, w27, #0x1 (1)",
|
|
"mrs x20, nzcv",
|
|
"bfi w20, w21, #29, #1",
|
|
"msr nzcv, x20"
|
|
]
|
|
},
|
|
"lock inc dword [rax]": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP4 0xfe /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddal w20, w27, [x4]",
|
|
"cset x20, hs",
|
|
"adds w26, w27, #0x1 (1)",
|
|
"mrs x21, nzcv",
|
|
"bfi w21, w20, #29, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
},
|
|
"lock inc qword [rax]": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Comment": "GROUP4 0xfe /0",
|
|
"ExpectedArm64ASM": [
|
|
"mov w20, #0x1",
|
|
"ldaddal x20, x27, [x4]",
|
|
"cset x20, hs",
|
|
"adds x26, x27, #0x1 (1)",
|
|
"mrs x21, nzcv",
|
|
"bfi w21, w20, #29, #1",
|
|
"msr nzcv, x21"
|
|
]
|
|
}
|
|
}
|
|
}
|