Files
ircolib/tests/issues/x86-xacquire-xrelease.yaml
T
iris 802798ce3c Squashed 'external/capstone/' content from commit e46f64fa
git-subtree-dir: external/capstone
git-subtree-split: e46f64fadb351e9ecd05264fab26f2772feb0994
2026-05-11 11:55:07 +02:00

123 lines
3.4 KiB
YAML

test_cases:
# From the Intel SDM Section 6.1: XACQUIRE/XRELEASE.
-
input:
name: "Rightmost prefix byte should determine HLE semantic"
bytes: [ 0xF3, 0xF2, 0xC6, 0x00, 0x00 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "mov byte ptr [rax], 0"
-
input:
name: "Rightmost prefix byte should determine HLE semantic"
bytes: [ 0xF2, 0xF3, 0xC6, 0x00, 0x00 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xrelease mov byte ptr [rax], 0"
-
input:
name: "Rightmost prefix byte should determine HLE semantic"
bytes: [ 0xF2, 0xF3, 0xF0, 0x00, 0x00 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xrelease lock add byte ptr [rax], al"
# Prefixes may be ordered freely.
-
input:
name: "Rightmost prefix byte should determine HLE semantic"
bytes: [ 0xF0, 0xF2, 0xF3, 0x00, 0x00 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xrelease lock add byte ptr [rax], al"
-
input:
name: "Rightmost prefix byte should determine HLE semantic"
bytes: [ 0xF2, 0xF0, 0xF3, 0x00, 0x00 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xrelease lock add byte ptr [rax], al"
# Special cases: XCHG
-
input:
name: "special case: xacquire without lock on XCHG"
bytes: [ 0xF3, 0xF2, 0xF3, 0xF3, 0xF2, 0x87, 0x18 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xacquire xchg dword ptr [rax], ebx"
-
input:
name: "special case: xrelease without lock on XCHG"
bytes: [ 0xF3, 0x87, 0x18 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xrelease xchg dword ptr [rax], ebx"
# Separate tests with REX prefix because it is parsed separately in the decoder
-
input:
name: "xrelease with REX prefix"
bytes: [ 0xF3, 0xF0, 0x48, 0x87, 0x18 ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "xrelease lock xchg qword ptr [rax], rbx"
# Ensure REPs for string instructions are decoded correctly
-
input:
name: "x86-64: multiple REPs on SCASB should decode to last rep"
bytes: [ 0xF2, 0xF3, 0xAE ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns:
-
asm_text: "repe scasb al, byte ptr [rdi]"
-
input:
name: "x86-64: LOCK+REP on string operation is invalid"
bytes: [ 0xF0, 0xF2, 0xF3, 0xAE ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_64 ]
expected:
insns: []
-
input:
name: "x86-32: multiple REPs on SCASB should decode to last rep"
bytes: [ 0xF2, 0xF3, 0xAE ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
expected:
insns:
-
asm_text: "repe scasb al, byte ptr es:[edi]"
-
input:
name: "x86-32: LOCK+REP on string operation is invalid"
bytes: [ 0xF0, 0xF2, 0xF3, 0xAE ]
arch: "CS_ARCH_X86"
options: [ CS_OPT_DETAIL, CS_MODE_32 ]
expected:
insns: []