Files
FEX-Emu--FEX/unittests/InstructionCountCI/PrimaryGroup.json
T
2026-03-28 17:56:23 -07:00

3119 lines
79 KiB
JSON

{
"Features": {
"Bitness": 64,
"EnabledHostFeatures": [],
"DisabledHostFeatures": [
"SVE128",
"SVE256",
"AFP",
"FLAGM",
"FLAGM2"
]
},
"Comment": [
"Instructions in this table that are marked optimal don't have their flag calculation part of this assumption",
"Flags calculation can dramatically change an instruction's lengths so this is mostly ignored here."
],
"Instructions": {
"add al, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP1 0x80 /0",
"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"
]
},
"or al, 1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x80 /1",
"ExpectedArm64ASM": [
"orr x26, x4, #0x1",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"adc al, 1": {
"ExpectedInstructionCount": 17,
"Comment": "GROUP1 0x80 /2",
"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"
]
},
"sbb al, 1": {
"ExpectedInstructionCount": 18,
"Comment": "GROUP1 0x80 /3",
"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"
]
},
"and al, 1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x80 /4",
"ExpectedArm64ASM": [
"and x26, x4, #0xffffffffffffff01",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sub al, 1": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP1 0x80 /5",
"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"
]
},
"xor al, 1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x80 /6",
"ExpectedArm64ASM": [
"eor x26, x4, #0x1",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"cmp al, 1": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x80 /7",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, #0x1 (1)",
"mov x27, x4"
]
},
"add al, -1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP1 0x80 /0",
"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"
]
},
"or al, -1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x80 /1",
"ExpectedArm64ASM": [
"orr x26, x4, #0xff",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"adc al, -1": {
"ExpectedInstructionCount": 15,
"Comment": "GROUP1 0x80 /2",
"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"
]
},
"sbb al, -1": {
"ExpectedInstructionCount": 16,
"Comment": "GROUP1 0x80 /3",
"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"
]
},
"and al, -1": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x80 /4",
"ExpectedArm64ASM": [
"cmn wzr, w4, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x4"
]
},
"sub al, -1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x80 /5",
"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"
]
},
"xor al, -1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x80 /6",
"ExpectedArm64ASM": [
"eor x26, x4, #0xff",
"cmn wzr, w26, lsl #24",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"cmp al, -1": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x80 /7",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"mvn w27, w4",
"lsl w0, w4, #24",
"cmp w0, w20, lsl #24",
"sub w26, w4, #0xff (255)"
]
},
"add ax, 256": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP1 0x81 /0",
"ExpectedArm64ASM": [
"mov w20, #0x100",
"lsl w0, w4, #16",
"cmn w0, w20, lsl #16",
"add w26, w4, #0x100 (256)",
"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, 256": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x81 /0",
"ExpectedArm64ASM": [
"adds w26, w4, #0x100 (256)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"add rax, 256": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x81 /0",
"ExpectedArm64ASM": [
"adds x26, x4, #0x100 (256)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"or eax, 256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /1",
"ExpectedArm64ASM": [
"orr w4, w4, #0x100",
"subs w26, w4, #0x0 (0)"
]
},
"or rax, 256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /1",
"ExpectedArm64ASM": [
"orr x4, x4, #0x100",
"subs x26, x4, #0x0 (0)"
]
},
"adc eax, 256": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP1 0x81 /2",
"ExpectedArm64ASM": [
"mov w20, #0x100",
"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, 256": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP1 0x81 /2",
"ExpectedArm64ASM": [
"mov w20, #0x100",
"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"
]
},
"sbb eax, 256": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x81 /3",
"ExpectedArm64ASM": [
"mov w20, #0x100",
"sbcs w26, w4, w20",
"mov x27, x4",
"mov x4, x26"
]
},
"sbb rax, 256": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x81 /3",
"ExpectedArm64ASM": [
"mov w20, #0x100",
"sbcs x26, x4, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"and eax, 256": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x81 /4",
"ExpectedArm64ASM": [
"ands w26, w4, #0x100",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and rax, 256": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x81 /4",
"ExpectedArm64ASM": [
"ands x26, x4, #0x100",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sub eax, 256": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x81 /5",
"ExpectedArm64ASM": [
"subs w26, w4, #0x100 (256)",
"mov x27, x4",
"mov x4, x26"
]
},
"sub rax, 256": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x81 /5",
"ExpectedArm64ASM": [
"subs x26, x4, #0x100 (256)",
"mov x27, x4",
"mov x4, x26"
]
},
"xor eax, 256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /6",
"ExpectedArm64ASM": [
"eor w4, w4, #0x100",
"subs w26, w4, #0x0 (0)"
]
},
"xor rax, 256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /6",
"ExpectedArm64ASM": [
"eor x4, x4, #0x100",
"subs x26, x4, #0x0 (0)"
]
},
"cmp eax, 256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /7",
"ExpectedArm64ASM": [
"subs w26, w4, #0x100 (256)",
"mov x27, x4"
]
},
"cmp rax, 256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /7",
"ExpectedArm64ASM": [
"subs x26, x4, #0x100 (256)",
"mov x27, x4"
]
},
"add ax, -256": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP1 0x81 /0",
"ExpectedArm64ASM": [
"mov w20, #0xff00",
"lsl w0, w4, #16",
"cmn w0, w20, lsl #16",
"add w26, w4, w20",
"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, -256": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x81 /0",
"ExpectedArm64ASM": [
"subs w26, w4, #0x100 (256)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"add rax, -256": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x81 /0",
"ExpectedArm64ASM": [
"subs x26, x4, #0x100 (256)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"or eax, -256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /1",
"ExpectedArm64ASM": [
"orr w4, w4, #0xffffff00",
"subs w26, w4, #0x0 (0)"
]
},
"or rax, -256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /1",
"ExpectedArm64ASM": [
"orr x4, x4, #0xffffffffffffff00",
"subs x26, x4, #0x0 (0)"
]
},
"adc eax, -256": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP1 0x81 /2",
"ExpectedArm64ASM": [
"mov w20, #0xffffff00",
"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, -256": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP1 0x81 /2",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffff00",
"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"
]
},
"sbb eax, -256": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x81 /3",
"ExpectedArm64ASM": [
"mov w20, #0xffffff00",
"sbcs w26, w4, w20",
"mov x27, x4",
"mov x4, x26"
]
},
"sbb rax, -256": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x81 /3",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffff00",
"sbcs x26, x4, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"and eax, -256": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x81 /4",
"ExpectedArm64ASM": [
"ands w26, w4, #0xffffff00",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and rax, -256": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x81 /4",
"ExpectedArm64ASM": [
"ands x26, x4, #0xffffffffffffff00",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sub eax, -256": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x81 /5",
"ExpectedArm64ASM": [
"adds w26, w4, #0x100 (256)",
"mov x27, x4",
"mov x4, x26"
]
},
"sub rax, -256": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x81 /5",
"ExpectedArm64ASM": [
"adds x26, x4, #0x100 (256)",
"mov x27, x4",
"mov x4, x26"
]
},
"xor eax, -256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /6",
"ExpectedArm64ASM": [
"eor w4, w4, #0xffffff00",
"subs w26, w4, #0x0 (0)"
]
},
"xor rax, -256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /6",
"ExpectedArm64ASM": [
"eor x4, x4, #0xffffffffffffff00",
"subs x26, x4, #0x0 (0)"
]
},
"cmp eax, -256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /7",
"ExpectedArm64ASM": [
"adds w26, w4, #0x100 (256)",
"mov x27, x4"
]
},
"cmp rax, -256": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x81 /7",
"ExpectedArm64ASM": [
"adds x26, x4, #0x100 (256)",
"mov x27, x4"
]
},
"add ax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP1 0x83 /0",
"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": "GROUP1 0x83 /0",
"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": "GROUP1 0x83 /0",
"ExpectedArm64ASM": [
"adds x26, x4, #0x1 (1)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"or eax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /1",
"ExpectedArm64ASM": [
"orr w4, w4, #0x1",
"subs w26, w4, #0x0 (0)"
]
},
"or rax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /1",
"ExpectedArm64ASM": [
"orr x4, x4, #0x1",
"subs x26, x4, #0x0 (0)"
]
},
"adc eax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP1 0x83 /2",
"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": "GROUP1 0x83 /2",
"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"
]
},
"sbb eax, 1": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x83 /3",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"sbcs w26, w4, w20",
"mov x27, x4",
"mov x4, x26"
]
},
"sbb rax, 1": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x83 /3",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"sbcs x26, x4, x20",
"mov x27, x4",
"mov x4, x26"
]
},
"and eax, 1": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x83 /4",
"ExpectedArm64ASM": [
"ands w26, w4, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"and rax, 1": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP1 0x83 /4",
"ExpectedArm64ASM": [
"ands x26, x4, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sub eax, 1": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x83 /5",
"ExpectedArm64ASM": [
"subs w26, w4, #0x1 (1)",
"mov x27, x4",
"mov x4, x26"
]
},
"sub rax, 1": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x83 /5",
"ExpectedArm64ASM": [
"subs x26, x4, #0x1 (1)",
"mov x27, x4",
"mov x4, x26"
]
},
"xor eax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /6",
"ExpectedArm64ASM": [
"eor w4, w4, #0x1",
"subs w26, w4, #0x0 (0)"
]
},
"xor rax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /6",
"ExpectedArm64ASM": [
"eor x4, x4, #0x1",
"subs x26, x4, #0x0 (0)"
]
},
"cmp eax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /7",
"ExpectedArm64ASM": [
"subs w26, w4, #0x1 (1)",
"mov x27, x4"
]
},
"cmp rax, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /7",
"ExpectedArm64ASM": [
"subs x26, x4, #0x1 (1)",
"mov x27, x4"
]
},
"add ax, -1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP1 0x83 /0",
"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": "GROUP1 0x83 /0",
"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": "GROUP1 0x83 /0",
"ExpectedArm64ASM": [
"mvn w27, w4",
"subs x26, x4, #0x1 (1)",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"or eax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x83 /-1",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"orr w4, w4, w20",
"subs w26, w4, #0x0 (0)"
]
},
"or rax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x83 /-1",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"orr x4, x4, x20",
"subs x26, x4, #0x0 (0)"
]
},
"adc eax, -1": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP1 0x83 /2",
"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": "GROUP1 0x83 /2",
"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 eax, -1": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x83 /3",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"mvn w27, w4",
"sbcs w26, w4, w20",
"mov x4, x26"
]
},
"sbb rax, -1": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP1 0x83 /3",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"mvn w27, w4",
"sbcs x26, x4, x20",
"mov x4, x26"
]
},
"and eax, -1": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP1 0x83 /4",
"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": "GROUP1 0x83 /4",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"ands x26, x4, x20",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x4, x26"
]
},
"sub eax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x83 /5",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds w26, w4, #0x1 (1)",
"mov x4, x26"
]
},
"sub rax, -1": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP1 0x83 /5",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds x26, x4, #0x1 (1)",
"mov x4, x26"
]
},
"xor eax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /6",
"ExpectedArm64ASM": [
"mvn w4, w4",
"subs w26, w4, #0x0 (0)"
]
},
"xor rax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /6",
"ExpectedArm64ASM": [
"mvn x4, x4",
"subs x26, x4, #0x0 (0)"
]
},
"cmp eax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /7",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds w26, w4, #0x1 (1)"
]
},
"cmp rax, -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP1 0x83 /7",
"ExpectedArm64ASM": [
"mvn w27, w4",
"adds x26, x4, #0x1 (1)"
]
},
"rol al, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC0 /0",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #24, #8",
"ror w20, w20, #30",
"bfxil x4, x20, #0, #8",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"ror al, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC0 /1",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #8, #8",
"ror w20, w20, #2",
"bfxil x4, x20, #0, #8",
"eor x20, x20, #0x80",
"ubfx x20, x20, #7, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rcl al, 2": {
"ExpectedInstructionCount": 22,
"Comment": "GROUP2 0xC0 /2",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"cset x21, lo",
"mov w22, #0x0",
"bfi x22, x20, #55, #8",
"bfi x22, x21, #63, #1",
"bfi x22, x20, #46, #8",
"bfi x22, x21, #54, #1",
"bfi x22, x20, #37, #8",
"bfi x22, x21, #45, #1",
"bfi x22, x20, #28, #8",
"bfi x22, x21, #36, #1",
"bfi x22, x20, #19, #8",
"bfi x22, x21, #27, #1",
"bfxil x22, x20, #0, #8",
"ror x20, x22, #62",
"bfxil x4, x20, #0, #8",
"ror x20, x22, #61",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rcr al, 2": {
"ExpectedInstructionCount": 13,
"Comment": "GROUP2 0xC0 /3",
"ExpectedArm64ASM": [
"cset x20, lo",
"uxtb w21, w4",
"bfi x21, x20, #8, #1",
"bfi x21, x21, #9, #9",
"bfi x21, x21, #18, #18",
"bfi x21, x21, #36, #9",
"lsr x20, x21, #2",
"bfxil x4, x20, #0, #8",
"eor x20, x21, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"shl al, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC0 /4",
"ExpectedArm64ASM": [
"lsl w26, w4, #2",
"cmn wzr, w26, lsl #24",
"eor x20, x4, #0x40",
"ubfx x20, x20, #6, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #8"
]
},
"shr al, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC0 /5",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"lsr w26, w20, #2",
"cmn wzr, w26, lsl #24",
"eor x20, x20, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #8"
]
},
"sar al, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC0 /7",
"ExpectedArm64ASM": [
"sxtb x20, w4",
"asr w26, w20, #2",
"cmn wzr, w26, lsl #24",
"eor x20, x20, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #8"
]
},
"rol ax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /0",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #16, #16",
"ror w20, w20, #30",
"bfxil x4, x20, #0, #16",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rol eax, 2": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xC1 /0",
"ExpectedArm64ASM": [
"ror w4, w4, #30",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rol rax, 2": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xC1 /0",
"ExpectedArm64ASM": [
"ror x4, x4, #62",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"ror ax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /1",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #16, #16",
"ror w20, w20, #2",
"bfxil x4, x20, #0, #16",
"eor x20, x20, #0x8000",
"ubfx x20, x20, #15, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"ror eax, 2": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xC1 /1",
"ExpectedArm64ASM": [
"ror w4, w4, #2",
"eor x20, x4, #0x80000000",
"ubfx x20, x20, #31, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"ror rax, 2": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xC1 /1",
"ExpectedArm64ASM": [
"ror x4, x4, #2",
"eor x20, x4, #0x8000000000000000",
"lsr x20, x20, #63",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rcl ax, 2": {
"ExpectedInstructionCount": 18,
"Comment": "GROUP2 0xC1 /2",
"ExpectedArm64ASM": [
"uxth w20, w4",
"cset x21, lo",
"mov w22, #0x0",
"bfi x22, x20, #47, #16",
"bfi x22, x21, #63, #1",
"bfi x22, x20, #30, #16",
"bfi x22, x21, #46, #1",
"bfi x22, x20, #13, #16",
"bfi x22, x21, #29, #1",
"bfxil x22, x20, #0, #16",
"ror x20, x22, #62",
"bfxil x4, x20, #0, #16",
"ror x20, x22, #61",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rcl eax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /2",
"ExpectedArm64ASM": [
"lsl w20, w4, #2",
"cset x21, lo",
"orr w20, w20, w4, lsr #31",
"eor x22, x4, #0x40000000",
"ubfx x22, x22, #30, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"orr w4, w20, w21, lsl #1",
"msr nzcv, x23"
]
},
"rcl rax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /2",
"ExpectedArm64ASM": [
"lsl x20, x4, #2",
"cset x21, lo",
"orr x20, x20, x4, lsr #63",
"eor x22, x4, #0x4000000000000000",
"ubfx x22, x22, #62, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"orr x4, x20, x21, lsl #1",
"msr nzcv, x23"
]
},
"rcr ax, 2": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xC1 /3",
"ExpectedArm64ASM": [
"cset x20, lo",
"uxth w21, w4",
"bfi x21, x20, #16, #1",
"bfi x21, x21, #17, #17",
"bfi x21, x21, #34, #17",
"lsr x20, x21, #2",
"bfxil x4, x20, #0, #16",
"eor x20, x21, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21"
]
},
"rcr eax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /3",
"ExpectedArm64ASM": [
"lsr w20, w4, #2",
"cset x21, lo",
"orr w20, w20, w4, lsl #31",
"eor x22, x4, #0x2",
"ubfx x22, x22, #1, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"orr w4, w20, w21, lsl #30",
"msr nzcv, x23"
]
},
"rcr rax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /3",
"ExpectedArm64ASM": [
"lsr x20, x4, #2",
"cset x21, lo",
"orr x20, x20, x4, lsl #63",
"eor x22, x4, #0x2",
"ubfx x22, x22, #1, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"orr x4, x20, x21, lsl #62",
"msr nzcv, x23"
]
},
"shl ax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /4",
"ExpectedArm64ASM": [
"lsl w26, w4, #2",
"cmn wzr, w26, lsl #16",
"eor x20, x4, #0x4000",
"ubfx x20, x20, #14, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #16"
]
},
"shl eax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /4",
"ExpectedArm64ASM": [
"lsl w26, w4, #2",
"cmp w26, #0x0 (0)",
"eor x20, x4, #0x40000000",
"ubfx x20, x20, #30, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"shl rax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /4",
"ExpectedArm64ASM": [
"lsl x26, x4, #2",
"cmp x26, #0x0 (0)",
"eor x20, x4, #0x4000000000000000",
"ubfx x20, x20, #62, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"shr ax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /5",
"ExpectedArm64ASM": [
"uxth w20, w4",
"lsr w26, w20, #2",
"cmn wzr, w26, lsl #16",
"eor x20, x20, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #16"
]
},
"shr eax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /5",
"ExpectedArm64ASM": [
"lsr w26, w4, #2",
"cmp w26, #0x0 (0)",
"eor x20, x4, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"shr rax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /5",
"ExpectedArm64ASM": [
"lsr x26, x4, #2",
"cmp x26, #0x0 (0)",
"eor x20, x4, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"sar ax, 2": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xC1 /7",
"ExpectedArm64ASM": [
"sxth x20, w4",
"asr w26, w20, #2",
"cmn wzr, w26, lsl #16",
"eor x20, x20, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #16"
]
},
"sar eax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /7",
"ExpectedArm64ASM": [
"asr w26, w4, #2",
"cmp w26, #0x0 (0)",
"eor x20, x4, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"sar rax, 2": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xC1 /7",
"ExpectedArm64ASM": [
"asr x26, x4, #2",
"cmp x26, #0x0 (0)",
"eor x20, x4, #0x2",
"ubfx x20, x20, #1, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"rol al, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd0 /0",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #24, #8",
"ror w20, w20, #31",
"bfxil x4, x20, #0, #8",
"eor x21, x20, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w20, w20, lsr #7",
"ubfx x20, x20, #0, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"ror al, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd0 /1",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #8, #8",
"ror w20, w20, #1",
"bfxil x4, x20, #0, #8",
"eor x21, x20, #0x80",
"ubfx x21, x21, #7, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w20, w20, lsr #1",
"ubfx x20, x20, #6, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"rcl al, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd0 /2",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"cset x21, lo",
"orr w21, w21, w20, lsl #1",
"eor x22, x20, #0x80",
"ubfx x22, x22, #7, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor w20, w21, w20",
"ubfx x20, x20, #7, #1",
"bfi w23, w20, #28, #1",
"bfxil x4, x21, #0, #8",
"msr nzcv, x23"
]
},
"rcr al, 1": {
"ExpectedInstructionCount": 13,
"Comment": "GROUP2 0xd0 /3",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"cset x21, lo",
"eor x22, x20, #0x1",
"ubfx x22, x22, #0, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"ubfx w20, w20, #1, #7",
"bfi w20, w21, #7, #1",
"bfxil x4, x20, #0, #8",
"eor w20, w20, w20, lsr #1",
"ubfx x20, x20, #6, #1",
"bfi w23, w20, #28, #1",
"msr nzcv, x23"
]
},
"shl al, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd0 /4",
"ExpectedArm64ASM": [
"lsl w26, w4, #1",
"cmn wzr, w26, lsl #24",
"eor x20, x4, #0x80",
"ubfx x20, x20, #7, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor w20, w26, w4",
"ubfx x20, x20, #7, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #8"
]
},
"shr al, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd0 /5",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"lsr w26, w20, #1",
"cmn wzr, w26, lsl #24",
"eor x21, x20, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"ubfx x20, x20, #7, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22",
"bfxil x4, x26, #0, #8"
]
},
"sar al, 1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xd0 /7",
"ExpectedArm64ASM": [
"sxtb x20, w4",
"asr w26, w20, #1",
"cmn wzr, w26, lsl #24",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #8"
]
},
"rol ax, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd1 /0",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #16, #16",
"ror w20, w20, #31",
"bfxil x4, x20, #0, #16",
"eor x21, x20, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w20, w20, lsr #15",
"ubfx x20, x20, #0, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"rol eax, 1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xd1 /0",
"ExpectedArm64ASM": [
"ror w4, w4, #31",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor w20, w4, w4, lsr #31",
"ubfx x20, x20, #0, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21"
]
},
"rol rax, 1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xd1 /0",
"ExpectedArm64ASM": [
"ror x4, x4, #63",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor x20, x4, x4, lsr #63",
"ubfx x20, x20, #0, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21"
]
},
"ror ax, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd1 /1",
"ExpectedArm64ASM": [
"mov x20, x4",
"bfi w20, w4, #16, #16",
"ror w20, w20, #1",
"bfxil x4, x20, #0, #16",
"eor x21, x20, #0x8000",
"ubfx x21, x21, #15, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w20, w20, lsr #1",
"ubfx x20, x20, #14, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"ror eax, 1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xd1 /1",
"ExpectedArm64ASM": [
"ror w4, w4, #1",
"eor x20, x4, #0x80000000",
"ubfx x20, x20, #31, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor w20, w4, w4, lsr #1",
"ubfx x20, x20, #30, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21"
]
},
"ror rax, 1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xd1 /1",
"ExpectedArm64ASM": [
"ror x4, x4, #1",
"eor x20, x4, #0x8000000000000000",
"lsr x20, x20, #63",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor x20, x4, x4, lsr #1",
"ubfx x20, x20, #62, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21"
]
},
"rcl ax, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd1 /2",
"ExpectedArm64ASM": [
"uxth w20, w4",
"cset x21, lo",
"orr w21, w21, w20, lsl #1",
"eor x22, x20, #0x8000",
"ubfx x22, x22, #15, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor w20, w21, w20",
"ubfx x20, x20, #15, #1",
"bfi w23, w20, #28, #1",
"bfxil x4, x21, #0, #16",
"msr nzcv, x23"
]
},
"rcl eax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd1 /2",
"ExpectedArm64ASM": [
"mov w20, w4",
"cset x21, lo",
"orr w4, w21, w20, lsl #1",
"eor x21, x20, #0x80000000",
"ubfx x21, x21, #31, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor w20, w4, w20",
"ubfx x20, x20, #31, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"rcl rax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd1 /2",
"ExpectedArm64ASM": [
"cset x20, lo",
"orr x20, x20, x4, lsl #1",
"eor x21, x4, #0x8000000000000000",
"lsr x21, x21, #63",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"eor x21, x20, x4",
"lsr x21, x21, #63",
"bfi w22, w21, #28, #1",
"msr nzcv, x22",
"mov x4, x20"
]
},
"rcr ax, 1": {
"ExpectedInstructionCount": 12,
"Comment": "GROUP2 0xd1 /3",
"ExpectedArm64ASM": [
"cset x20, lo",
"eor x21, x4, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"ubfx w21, w4, #1, #15",
"orr w20, w21, w20, lsl #15",
"bfxil x4, x20, #0, #16",
"eor x20, x20, x20, lsr #1",
"ubfx x20, x20, #14, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"rcr eax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xd1 /3",
"ExpectedArm64ASM": [
"cset x20, lo",
"eor x21, x4, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"extr w4, w20, w4, #1",
"eor x20, x4, x4, lsr #1",
"ubfx x20, x20, #30, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"rcr rax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xd1 /3",
"ExpectedArm64ASM": [
"cset x20, lo",
"eor x21, x4, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"extr x4, x20, x4, #1",
"eor x20, x4, x4, lsr #1",
"ubfx x20, x20, #62, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"shl ax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd1 /4",
"ExpectedArm64ASM": [
"lsl w26, w4, #1",
"cmn wzr, w26, lsl #16",
"eor x20, x4, #0x8000",
"ubfx x20, x20, #15, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor w20, w26, w4",
"ubfx x20, x20, #15, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #16"
]
},
"shl eax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd1 /4",
"ExpectedArm64ASM": [
"lsl w26, w4, #1",
"cmp w26, #0x0 (0)",
"eor x20, x4, #0x80000000",
"ubfx x20, x20, #31, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor w20, w26, w4",
"ubfx x20, x20, #31, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"shl rax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd1 /4",
"ExpectedArm64ASM": [
"lsl x26, x4, #1",
"cmp x26, #0x0 (0)",
"eor x20, x4, #0x8000000000000000",
"lsr x20, x20, #63",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"eor x20, x26, x4",
"lsr x20, x20, #63",
"bfi w21, w20, #28, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"shr ax, 1": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd1 /5",
"ExpectedArm64ASM": [
"uxth w20, w4",
"lsr w26, w20, #1",
"cmn wzr, w26, lsl #16",
"eor x21, x20, #0x1",
"ubfx x21, x21, #0, #1",
"mrs x22, nzcv",
"bfi w22, w21, #29, #1",
"ubfx x20, x20, #15, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22",
"bfxil x4, x26, #0, #16"
]
},
"shr eax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xd1 /5",
"ExpectedArm64ASM": [
"lsr w26, w4, #1",
"cmp w26, #0x0 (0)",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"ubfx x20, x4, #31, #1",
"bfi w21, w20, #28, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"shr rax, 1": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xd1 /5",
"ExpectedArm64ASM": [
"lsr x26, x4, #1",
"cmp x26, #0x0 (0)",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"lsr x20, x4, #63",
"bfi w21, w20, #28, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"sar ax, 1": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xd1 /7",
"ExpectedArm64ASM": [
"sxth x20, w4",
"asr w26, w20, #1",
"cmn wzr, w26, lsl #16",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"bfxil x4, x26, #0, #16"
]
},
"sar eax, 1": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xd1 /7",
"ExpectedArm64ASM": [
"asr w26, w4, #1",
"cmp w26, #0x0 (0)",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"sar rax, 1": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xd1 /7",
"ExpectedArm64ASM": [
"asr x26, x4, #1",
"cmp x26, #0x0 (0)",
"eor x20, x4, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x4, x26"
]
},
"rol al, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd2 /0",
"ExpectedArm64ASM": [
"and x20, x7, #0x7",
"mov x21, x4",
"bfi w21, w4, #24, #8",
"neg x20, x20",
"ror w20, w21, w20",
"bfxil x4, x20, #0, #8",
"and x21, x7, #0x1f",
"cbz w21, #+0x1c",
"eor x0, x20, x20, lsr #7",
"mvn x1, x20",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"ror al, cl": {
"ExpectedInstructionCount": 15,
"Comment": "GROUP2 0xd2 /1",
"ExpectedArm64ASM": [
"and x20, x7, #0x7",
"mov x21, x4",
"bfi w21, w4, #8, #8",
"ror w20, w21, w20",
"bfxil x4, x20, #0, #8",
"and x21, x7, #0x1f",
"cbz w21, #+0x24",
"eor x0, x20, x20, lsr #1",
"mvn x1, x20",
"lsr w0, w0, #6",
"lsr w1, w1, #7",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"rcl al, cl": {
"ExpectedInstructionCount": 31,
"Comment": "GROUP2 0xd2 /2",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"cbz x20, #+0x78",
"and x20, x7, #0x1f",
"uxtb w21, w4",
"cset x22, lo",
"mov w23, #0x0",
"bfi x23, x21, #55, #8",
"bfi x23, x22, #63, #1",
"bfi x23, x21, #46, #8",
"bfi x23, x22, #54, #1",
"bfi x23, x21, #37, #8",
"bfi x23, x22, #45, #1",
"bfi x23, x21, #28, #8",
"bfi x23, x22, #36, #1",
"bfi x23, x21, #19, #8",
"bfi x23, x22, #27, #1",
"bfxil x23, x21, #0, #8",
"neg x21, x20",
"ror x21, x23, x21",
"bfxil x4, x21, #0, #8",
"mov w22, #0x3f",
"sub x20, x22, x20",
"ror x20, x23, x20",
"eor x22, x20, #0x1",
"ubfx x22, x22, #0, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor x20, x20, x21, lsr #7",
"ubfx x20, x20, #0, #1",
"bfi w23, w20, #28, #1",
"msr nzcv, x23"
]
},
"rcr al, cl": {
"ExpectedInstructionCount": 21,
"Comment": "GROUP2 0xd2 /3",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"cbz x20, #+0x50",
"and x20, x7, #0x1f",
"cset x21, lo",
"uxtb w22, w4",
"bfi x22, x21, #8, #1",
"bfi x22, x22, #9, #9",
"bfi x22, x22, #18, #18",
"bfi x22, x22, #36, #9",
"lsr x21, x22, x20",
"bfxil x4, x21, #0, #8",
"sub w20, w20, #0x1 (1)",
"lsr w20, w22, w20",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x22, nzcv",
"bfi w22, w20, #29, #1",
"eor w20, w21, w21, lsr #1",
"ubfx x20, x20, #6, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"shl al, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd2 /4",
"ExpectedArm64ASM": [
"lsl w20, w4, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x2c",
"cmn wzr, w20, lsl #24",
"mov x26, x20",
"mvn x0, x20",
"eor w2, w4, w20",
"mrs x1, nzcv",
"lsr x0, x0, #8",
"bfi w1, w0, #29, #1",
"lsr w2, w2, #7",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"bfxil x4, x20, #0, #8"
]
},
"shr al, cl": {
"ExpectedInstructionCount": 16,
"Comment": "GROUP2 0xd2 /5",
"ExpectedArm64ASM": [
"uxtb w20, w4",
"lsr w21, w20, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x30",
"cmn wzr, w21, lsl #24",
"mov x26, x21",
"sub x0, x7, #0x1 (1)",
"lsr w0, w20, w0",
"mvn x0, x0",
"eor w2, w20, w21",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"lsr w2, w2, #7",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"bfxil x4, x21, #0, #8"
]
},
"sar al, cl": {
"ExpectedInstructionCount": 13,
"Comment": "GROUP2 0xd2 /7",
"ExpectedArm64ASM": [
"sxtb x20, w4",
"asr w21, w20, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x24",
"cmn wzr, w21, lsl #24",
"mov x26, x21",
"sub x0, x7, #0x1 (1)",
"lsr w0, w20, w0",
"mvn x0, x0",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"msr nzcv, x1",
"bfxil x4, x21, #0, #8"
]
},
"rol ax, cl": {
"ExpectedInstructionCount": 13,
"Comment": "GROUP2 0xd3 /0",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"mov x21, x4",
"bfi w21, w4, #16, #16",
"neg x22, x20",
"ror w21, w21, w22",
"bfxil x4, x21, #0, #16",
"cbz w20, #+0x1c",
"eor x0, x21, x21, lsr #15",
"mvn x1, x21",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"rol eax, cl": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xd3 /0",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"neg x21, x20",
"ror w4, w4, w21",
"cbz w20, #+0x1c",
"eor x0, x4, x4, lsr #31",
"mvn x1, x4",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"rol rax, cl": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xd3 /0",
"ExpectedArm64ASM": [
"and x20, x7, #0x3f",
"neg x21, x20",
"ror x4, x4, x21",
"cbz x20, #+0x1c",
"eor x0, x4, x4, lsr #63",
"mvn x1, x4",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"ror ax, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd3 /1",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"mov x21, x4",
"bfi w21, w4, #16, #16",
"ror w21, w21, w20",
"bfxil x4, x21, #0, #16",
"cbz w20, #+0x24",
"eor x0, x21, x21, lsr #1",
"mvn x1, x21",
"lsr w0, w0, #14",
"lsr w1, w1, #15",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"ror eax, cl": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd3 /1",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"ror w4, w4, w20",
"cbz w20, #+0x24",
"eor x0, x4, x4, lsr #1",
"mvn x1, x4",
"lsr w0, w0, #30",
"lsr w1, w1, #31",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"ror rax, cl": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd3 /1",
"ExpectedArm64ASM": [
"and x20, x7, #0x3f",
"ror x4, x4, x20",
"cbz x20, #+0x24",
"eor x0, x4, x4, lsr #1",
"mvn x1, x4",
"lsr x0, x0, #62",
"lsr x1, x1, #63",
"mrs x2, nzcv",
"bfi w2, w0, #28, #1",
"bfi w2, w1, #29, #1",
"msr nzcv, x2"
]
},
"rcl ax, cl": {
"ExpectedInstructionCount": 27,
"Comment": "GROUP2 0xd3 /2",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"cbz x20, #+0x68",
"and x20, x7, #0x1f",
"uxth w21, w4",
"cset x22, lo",
"mov w23, #0x0",
"bfi x23, x21, #47, #16",
"bfi x23, x22, #63, #1",
"bfi x23, x21, #30, #16",
"bfi x23, x22, #46, #1",
"bfi x23, x21, #13, #16",
"bfi x23, x22, #29, #1",
"bfxil x23, x21, #0, #16",
"neg x21, x20",
"ror x21, x23, x21",
"bfxil x4, x21, #0, #16",
"mov w22, #0x3f",
"sub x20, x22, x20",
"ror x20, x23, x20",
"eor x22, x20, #0x1",
"ubfx x22, x22, #0, #1",
"mrs x23, nzcv",
"bfi w23, w22, #29, #1",
"eor x20, x20, x21, lsr #15",
"ubfx x20, x20, #0, #1",
"bfi w23, w20, #28, #1",
"msr nzcv, x23"
]
},
"rcl eax, cl": {
"ExpectedInstructionCount": 21,
"Comment": "GROUP2 0xd3 /2",
"ExpectedArm64ASM": [
"and w20, w7, #0x1f",
"cbz x20, #+0x4c",
"lsl w20, w4, w7",
"cset x21, lo",
"neg w22, w7",
"lsr w23, w4, w22",
"orr w20, w20, w23, lsr #1",
"lsr w22, w4, w22",
"eor x23, x22, #0x1",
"ubfx x23, x23, #0, #1",
"mrs x24, nzcv",
"bfi w24, w23, #29, #1",
"sub w23, w7, #0x1 (1)",
"lsl w21, w21, w23",
"orr w4, w20, w21",
"eor w20, w4, w22, lsl #31",
"ubfx x20, x20, #31, #1",
"bfi w24, w20, #28, #1",
"msr nzcv, x24",
"b #+0x8",
"mov w4, w4"
]
},
"rcl rax, cl": {
"ExpectedInstructionCount": 19,
"Comment": "GROUP2 0xd3 /2",
"ExpectedArm64ASM": [
"and x20, x7, #0x3f",
"cbz x20, #+0x48",
"lsl x20, x4, x7",
"cset x21, lo",
"neg x22, x7",
"lsr x23, x4, x22",
"orr x20, x20, x23, lsr #1",
"lsr x22, x4, x22",
"eor x23, x22, #0x1",
"ubfx x23, x23, #0, #1",
"mrs x24, nzcv",
"bfi w24, w23, #29, #1",
"sub x23, x7, #0x1 (1)",
"lsl x21, x21, x23",
"orr x4, x20, x21",
"eor x20, x4, x22, lsl #63",
"lsr x20, x20, #63",
"bfi w24, w20, #28, #1",
"msr nzcv, x24"
]
},
"rcr ax, cl": {
"ExpectedInstructionCount": 20,
"Comment": "GROUP2 0xd3 /3",
"ExpectedArm64ASM": [
"and x20, x7, #0x1f",
"cbz x20, #+0x4c",
"and x20, x7, #0x1f",
"cset x21, lo",
"uxth w22, w4",
"bfi x22, x21, #16, #1",
"bfi x22, x22, #17, #17",
"bfi x22, x22, #34, #17",
"lsr x21, x22, x20",
"bfxil x4, x21, #0, #16",
"sub w20, w20, #0x1 (1)",
"lsr w20, w22, w20",
"eor x20, x20, #0x1",
"ubfx x20, x20, #0, #1",
"mrs x22, nzcv",
"bfi w22, w20, #29, #1",
"eor w20, w21, w21, lsr #1",
"ubfx x20, x20, #14, #1",
"bfi w22, w20, #28, #1",
"msr nzcv, x22"
]
},
"rcr eax, cl": {
"ExpectedInstructionCount": 21,
"Comment": "GROUP2 0xd3 /3",
"ExpectedArm64ASM": [
"and w20, w7, #0x1f",
"cbz x20, #+0x4c",
"lsr w20, w4, w7",
"cset x21, lo",
"neg w22, w7",
"lsl w23, w4, w22",
"orr w20, w20, w23, lsl #1",
"sub w23, w7, #0x1 (1)",
"lsr w23, w4, w23",
"eor x23, x23, #0x1",
"ubfx x23, x23, #0, #1",
"mrs x24, nzcv",
"bfi w24, w23, #29, #1",
"lsl w21, w21, w22",
"orr w4, w20, w21",
"eor w20, w4, w4, lsr #1",
"ubfx x20, x20, #30, #1",
"bfi w24, w20, #28, #1",
"msr nzcv, x24",
"b #+0x8",
"mov w4, w4"
]
},
"rcr rax, cl": {
"ExpectedInstructionCount": 19,
"Comment": "GROUP2 0xd3 /3",
"ExpectedArm64ASM": [
"and x20, x7, #0x3f",
"cbz x20, #+0x48",
"lsr x20, x4, x7",
"cset x21, lo",
"neg x22, x7",
"lsl x23, x4, x22",
"orr x20, x20, x23, lsl #1",
"sub x23, x7, #0x1 (1)",
"lsr x23, x4, x23",
"eor x23, x23, #0x1",
"ubfx x23, x23, #0, #1",
"mrs x24, nzcv",
"bfi w24, w23, #29, #1",
"lsl x21, x21, x22",
"orr x4, x20, x21",
"eor x20, x4, x4, lsr #1",
"ubfx x20, x20, #62, #1",
"bfi w24, w20, #28, #1",
"msr nzcv, x24"
]
},
"shl ax, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd3 /4",
"ExpectedArm64ASM": [
"lsl w20, w4, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x2c",
"cmn wzr, w20, lsl #16",
"mov x26, x20",
"mvn x0, x20",
"eor w2, w4, w20",
"mrs x1, nzcv",
"lsr x0, x0, #16",
"bfi w1, w0, #29, #1",
"lsr w2, w2, #15",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"bfxil x4, x20, #0, #16"
]
},
"shl eax, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd3 /4",
"ExpectedArm64ASM": [
"lsl w20, w4, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x2c",
"ands w26, w20, w20",
"neg w0, w7",
"lsr w0, w4, w0",
"mvn x0, x0",
"eor w2, w4, w20",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"lsr w2, w2, #31",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"mov x4, x20"
]
},
"shl rax, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd3 /4",
"ExpectedArm64ASM": [
"lsl x20, x4, x7",
"and w0, w7, #0x3f",
"cbz x0, #+0x2c",
"ands x26, x20, x20",
"neg x0, x7",
"lsr x0, x4, x0",
"mvn x0, x0",
"eor x2, x4, x20",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"lsr x2, x2, #63",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"mov x4, x20"
]
},
"shr ax, cl": {
"ExpectedInstructionCount": 16,
"Comment": "GROUP2 0xd3 /5",
"ExpectedArm64ASM": [
"uxth w20, w4",
"lsr w21, w20, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x30",
"cmn wzr, w21, lsl #16",
"mov x26, x21",
"sub x0, x7, #0x1 (1)",
"lsr w0, w20, w0",
"mvn x0, x0",
"eor w2, w20, w21",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"lsr w2, w2, #15",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"bfxil x4, x21, #0, #16"
]
},
"shr eax, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd3 /5",
"ExpectedArm64ASM": [
"lsr w20, w4, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x2c",
"ands w26, w20, w20",
"sub x0, x7, #0x1 (1)",
"lsr w0, w4, w0",
"mvn x0, x0",
"eor w2, w4, w20",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"lsr w2, w2, #31",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"mov x4, x20"
]
},
"shr rax, cl": {
"ExpectedInstructionCount": 14,
"Comment": "GROUP2 0xd3 /5",
"ExpectedArm64ASM": [
"lsr x20, x4, x7",
"and w0, w7, #0x3f",
"cbz x0, #+0x2c",
"ands x26, x20, x20",
"sub x0, x7, #0x1 (1)",
"lsr x0, x4, x0",
"mvn x0, x0",
"eor x2, x4, x20",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"lsr x2, x2, #63",
"bfi w1, w2, #28, #1",
"msr nzcv, x1",
"mov x4, x20"
]
},
"sar ax, cl": {
"ExpectedInstructionCount": 13,
"Comment": "GROUP2 0xd3 /7",
"ExpectedArm64ASM": [
"sxth x20, w4",
"asr w21, w20, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x24",
"cmn wzr, w21, lsl #16",
"mov x26, x21",
"sub x0, x7, #0x1 (1)",
"lsr w0, w20, w0",
"mvn x0, x0",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"msr nzcv, x1",
"bfxil x4, x21, #0, #16"
]
},
"sar eax, cl": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd3 /7",
"ExpectedArm64ASM": [
"asr w20, w4, w7",
"and w0, w7, #0x1f",
"cbz w0, #+0x20",
"ands w26, w20, w20",
"sub x0, x7, #0x1 (1)",
"lsr w0, w4, w0",
"mvn x0, x0",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"msr nzcv, x1",
"mov x4, x20"
]
},
"sar rax, cl": {
"ExpectedInstructionCount": 11,
"Comment": "GROUP2 0xd3 /7",
"ExpectedArm64ASM": [
"asr x20, x4, x7",
"and w0, w7, #0x3f",
"cbz x0, #+0x20",
"ands x26, x20, x20",
"sub x0, x7, #0x1 (1)",
"lsr x0, x4, x0",
"mvn x0, x0",
"mrs x1, nzcv",
"bfi w1, w0, #29, #1",
"msr nzcv, x1",
"mov x4, x20"
]
},
"test bl, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP2 0xf6 /0",
"ExpectedArm64ASM": [
"and w26, w6, #0x1",
"cmp w26, #0x0 (0)"
]
},
"not bl": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf6 /2",
"ExpectedArm64ASM": [
"eor x6, x6, #0xff"
]
},
"not bh": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf6 /2",
"ExpectedArm64ASM": [
"eor x6, x6, #0xff00"
]
},
"neg bl": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xf6 /3",
"ExpectedArm64ASM": [
"cmp wzr, w6, lsl #24",
"neg w26, w6",
"mov x20, x6",
"bfxil x20, x26, #0, #8",
"mov x27, x6",
"mov x6, x20"
]
},
"mul bl": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP2 0xf6 /4",
"ExpectedArm64ASM": [
"uxtb x20, w6",
"uxtb x21, w4",
"mul x20, x20, x21",
"bfxil x4, x20, #0, #16",
"ubfx x20, x20, #8, #8",
"cmp x20, #0x0 (0)",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul bl": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xf6 /5",
"ExpectedArm64ASM": [
"sxtb x20, w6",
"sxtb x21, w4",
"mul x20, x20, x21",
"bfxil x4, x20, #0, #16",
"sbfx x21, x20, #8, #8",
"sbfx x20, x20, #7, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"div bl": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xf6 /6",
"ExpectedArm64ASM": [
"uxtb w20, w6",
"uxth w23, w4",
"udiv w22, w23, w20",
"msub w21, w22, w20, w23",
"bfi x22, x21, #8, #8",
"bfxil x4, x22, #0, #16"
]
},
"idiv bl": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP2 0xf6 /7",
"ExpectedArm64ASM": [
"uxtb w20, w6",
"sxth x23, w4",
"sxtb x20, w20",
"sdiv x22, x23, x20",
"msub x21, x22, x20, x23",
"bfi x22, x21, #8, #8",
"bfxil x4, x22, #0, #16"
]
},
"test bx, 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP2 0xf7 /0",
"ExpectedArm64ASM": [
"and w26, w6, #0x1",
"cmp w26, #0x0 (0)"
]
},
"test ebx, 1": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP2 0xf7 /0",
"ExpectedArm64ASM": [
"ands w26, w6, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test rbx, 1": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP2 0xf7 /0",
"ExpectedArm64ASM": [
"ands x26, x6, #0x1",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20"
]
},
"test bx, -1": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP2 0xf7 /0",
"ExpectedArm64ASM": [
"cmn wzr, w6, lsl #16",
"mrs x20, nzcv",
"eor w20, w20, #0x20000000",
"msr nzcv, x20",
"mov x26, x6"
]
},
"test ebx, -1": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf7 /0",
"ExpectedArm64ASM": [
"subs w26, w6, #0x0 (0)"
]
},
"test rbx, -1": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf7 /0",
"ExpectedArm64ASM": [
"subs x26, x6, #0x0 (0)"
]
},
"not bx": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf7 /1",
"ExpectedArm64ASM": [
"eor x6, x6, #0xffff"
]
},
"not ebx": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf7 /1",
"ExpectedArm64ASM": [
"mvn w6, w6"
]
},
"not rbx": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP2 0xf7 /1",
"ExpectedArm64ASM": [
"mvn x6, x6"
]
},
"neg bx": {
"ExpectedInstructionCount": 6,
"Comment": "GROUP2 0xf7 /2",
"ExpectedArm64ASM": [
"cmp wzr, w6, lsl #16",
"neg w26, w6",
"mov x20, x6",
"bfxil x20, x26, #0, #16",
"mov x27, x6",
"mov x6, x20"
]
},
"neg ebx": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP2 0xf7 /2",
"ExpectedArm64ASM": [
"negs w26, w6",
"mov x27, x6",
"mov x6, x26"
]
},
"neg rbx": {
"ExpectedInstructionCount": 3,
"Comment": "GROUP2 0xf7 /2",
"ExpectedArm64ASM": [
"negs x26, x6",
"mov x27, x6",
"mov x6, x26"
]
},
"mul bx": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xf7 /3",
"ExpectedArm64ASM": [
"uxth x20, w6",
"uxth x21, w4",
"mul x20, x20, x21",
"bfxil x4, x20, #0, #16",
"ubfx x20, x20, #16, #16",
"bfxil x5, x20, #0, #16",
"cmp x20, #0x0 (0)",
"ccmp xzr, #0, #nzcV, eq"
]
},
"mul ebx": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP2 0xf7 /3",
"ExpectedArm64ASM": [
"mov w20, w6",
"mov w21, w4",
"mul x20, x20, x21",
"mov w4, w20",
"lsr x5, x20, #32",
"cmp x5, #0x0 (0)",
"ccmp xzr, #0, #nzcV, eq"
]
},
"mul rbx": {
"ExpectedInstructionCount": 4,
"Comment": "GROUP2 0xf7 /3",
"ExpectedArm64ASM": [
"umulh x5, x6, x4",
"mul x4, x6, x4",
"cmp x5, #0x0 (0)",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul bx": {
"ExpectedInstructionCount": 9,
"Comment": "GROUP2 0xf7 /5",
"ExpectedArm64ASM": [
"sxth x20, w6",
"sxth x21, w4",
"mul x20, x20, x21",
"bfxil x4, x20, #0, #16",
"sbfx x21, x20, #16, #16",
"bfxil x5, x21, #0, #16",
"sbfx x20, x20, #15, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul ebx": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP2 0xf7 /5",
"ExpectedArm64ASM": [
"sxtw x20, w6",
"sxtw x21, w4",
"mul x20, x20, x21",
"mov w4, w20",
"lsr x5, x20, #32",
"asr x21, x20, #32",
"sxtw x20, w20",
"sbfx x20, x20, #31, #1",
"cmp x21, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"imul rbx": {
"ExpectedInstructionCount": 5,
"Comment": "GROUP2 0xf7 /5",
"ExpectedArm64ASM": [
"smulh x5, x6, x4",
"mul x4, x6, x4",
"asr x20, x4, #63",
"cmp x5, x20",
"ccmp xzr, #0, #nzcV, eq"
]
},
"div bx": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP2 0xf7 /6",
"ExpectedArm64ASM": [
"uxth w20, w6",
"uxth w0, w4",
"bfi w0, w5, #16, #16",
"udiv w22, w0, w20",
"msub w21, w22, w20, w0",
"bfxil x4, x22, #0, #16",
"bfxil x5, x21, #0, #16"
]
},
"div ebx": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP2 0xf7 /6",
"ExpectedArm64ASM": [
"mov w1, w6",
"mov x0, x4",
"bfi x0, x5, #32, #32",
"udiv x20, x0, x1",
"msub x22, x20, x1, x0",
"mov w4, w20",
"mov w5, w22"
]
},
"div rbx": {
"ExpectedInstructionCount": 15,
"Comment": "GROUP2 0xf7 /6",
"ExpectedArm64ASM": [
"cbz x5, #+0x2c",
"mov x0, x5",
"mov x1, x4",
"mov x2, x6",
"ldr x3, [x28, #2968]",
"str x30, [sp, #-16]!",
"blr x3",
"ldr x30, [sp], #16",
"mov x20, x0",
"mov x22, x1",
"b #+0xc",
"udiv x20, x4, x6",
"msub x22, x20, x6, x4",
"mov x5, x22",
"mov x4, x20"
]
},
"idiv bx": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xf7 /7",
"ExpectedArm64ASM": [
"uxth w20, w6",
"uxth w0, w4",
"bfi w0, w5, #16, #16",
"sxth w1, w20",
"sdiv w22, w0, w1",
"msub w21, w22, w1, w0",
"bfxil x4, x22, #0, #16",
"bfxil x5, x21, #0, #16"
]
},
"idiv ebx": {
"ExpectedInstructionCount": 8,
"Comment": "GROUP2 0xf7 /7",
"ExpectedArm64ASM": [
"mov w20, w6",
"mov x0, x4",
"bfi x0, x5, #32, #32",
"sxtw x1, w20",
"sdiv x22, x0, x1",
"msub x21, x22, x1, x0",
"mov w4, w22",
"mov w5, w21"
]
},
"idiv rbx": {
"ExpectedInstructionCount": 17,
"Comment": "GROUP2 0xf7 /7",
"ExpectedArm64ASM": [
"asr x0, x4, #63",
"eor x0, x0, x5",
"cbz x0, #+0x2c",
"mov x0, x5",
"mov x1, x4",
"mov x2, x6",
"ldr x3, [x28, #2976]",
"str x30, [sp, #-16]!",
"blr x3",
"ldr x30, [sp], #16",
"mov x20, x0",
"mov x22, x1",
"b #+0xc",
"sdiv x20, x4, x6",
"msub x22, x20, x6, x4",
"mov x5, x22",
"mov x4, x20"
]
},
"inc al": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP3 0xfe /0",
"ExpectedArm64ASM": [
"uxtb w27, w4",
"mov w20, #0x1",
"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",
"bfxil x4, x26, #0, #8",
"msr nzcv, x20"
]
},
"dec al": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP3 0xfe /1",
"ExpectedArm64ASM": [
"uxtb w27, w4",
"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",
"bfxil x4, x26, #0, #8",
"msr nzcv, x20"
]
},
"inc ax": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP4 0xfe /0",
"ExpectedArm64ASM": [
"uxth w27, w4",
"mov w20, #0x1",
"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",
"bfxil x4, x26, #0, #16",
"msr nzcv, x20"
]
},
"inc eax": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP4 0xfe /0",
"ExpectedArm64ASM": [
"cset x20, hs",
"adds w26, w4, #0x1 (1)",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x26"
]
},
"inc rax": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP4 0xfe /0",
"ExpectedArm64ASM": [
"cset x20, hs",
"adds x26, x4, #0x1 (1)",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x26"
]
},
"dec ax": {
"ExpectedInstructionCount": 10,
"Comment": "GROUP4 0xfe /1",
"ExpectedArm64ASM": [
"uxth w27, w4",
"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",
"bfxil x4, x26, #0, #16",
"msr nzcv, x20"
]
},
"dec eax": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP4 0xfe /1",
"ExpectedArm64ASM": [
"cset x20, hs",
"subs w26, w4, #0x1 (1)",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x26"
]
},
"dec rax": {
"ExpectedInstructionCount": 7,
"Comment": "GROUP4 0xfe /1",
"ExpectedArm64ASM": [
"cset x20, hs",
"subs x26, x4, #0x1 (1)",
"mrs x21, nzcv",
"bfi w21, w20, #29, #1",
"msr nzcv, x21",
"mov x27, x4",
"mov x4, x26"
]
},
"push ax": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP4 0xff /6",
"ExpectedArm64ASM": [
"strh w4, [x8, #-2]!"
]
},
"call far [rsp]": {
"ExpectedInstructionCount": 17,
"Comment": "GROUP5 0xff /3",
"ExpectedArm64ASM": [
"ldr w20, [x8]",
"ldrh w21, [x8, #4]",
"ldrh w22, [x28, #962]",
"mov w23, #0x4",
"movk w23, #0x1, lsl #16",
"stp x23, x22, [x8, #-16]!",
"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]"
]
},
"push rax": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP4 0xff /6",
"ExpectedArm64ASM": [
"str x4, [x8, #-8]!"
]
},
"jmp far [rsp]": {
"ExpectedInstructionCount": 13,
"Comment": "GROUP5 0xff /5",
"ExpectedArm64ASM": [
"ldr w20, [x8]",
"ldrh w21, [x8, #4]",
"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]"
]
},
"mov byte [rax], 0": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP11 0xc6 /0",
"ExpectedArm64ASM": [
"strb wzr, [x4]"
]
},
"mov word [rax], 0": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"strh wzr, [x4]"
]
},
"mov dword [rax], 0": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"str wzr, [x4]"
]
},
"mov qword [rax], 0": {
"ExpectedInstructionCount": 1,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"str xzr, [x4]"
]
},
"mov byte [rax], 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc6 /0",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"strb w20, [x4]"
]
},
"mov word [rax], 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"strh w20, [x4]"
]
},
"mov dword [rax], 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"str w20, [x4]"
]
},
"mov qword [rax], 1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"mov w20, #0x1",
"str x20, [x4]"
]
},
"mov byte [rax], -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc6 /0",
"ExpectedArm64ASM": [
"mov w20, #0xff",
"strb w20, [x4]"
]
},
"mov word [rax], -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"mov w20, #0xffff",
"strh w20, [x4]"
]
},
"mov dword [rax], -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"mov w20, #0xffffffff",
"str w20, [x4]"
]
},
"mov qword [rax], -1": {
"ExpectedInstructionCount": 2,
"Comment": "GROUP11 0xc7 /0",
"ExpectedArm64ASM": [
"mov x20, #0xffffffffffffffff",
"str x20, [x4]"
]
}
}
}