x86/insns.pl, tools/testgen: share cc/scc condition-code tables

Extract the condition-code suffix table (%conds, @conds, and the
c_ccmask/c_nd/c_cc/c_scc bitmasks) out of x86/insns.pl's
conditional_forms() into a new shared x86/insns-cc.ph module, adding
cc_suffix_list($is_scc) to return the suffix list applicable to a
'...cc'-family (Jcc, SETcc, CMOVcc, CFCMOVcc) or '...scc'-family
(CCMPscc, CTESTscc, CMPccXADD, SETccZU) placeholder mnemonic. insns.pl
is refactored to use it (behavior-preserving: verified byte-identical
x86/insnsa.c, insnsb.c, insnsd.c, insnsi.h, insnsn.c, iflag.c,
iflaggen.h, asm/tokhash.c, asm/tokens.h before/after).

tools/testgen/gen-insn-tests.pl now requires the same module instead
of hand-rolling a 16-suffix 'cc'-only expansion table, closing the gap
where the APX 'scc'-suffix families (CCMPscc/CTESTscc/CMPccXADD/
SETccZU) were dropped as unsupported. The generator now detects and
expands any '...cc'/'...scc' placeholder mnemonic the same way
insns.pl's conditional_forms() does (case-sensitive /s?cc/ match and
substitution), so future new cc/scc families need no generator
changes. Mnemonics with generated tests: 2432 -> 2606 (+174, one per
newly-expanded scc-family condition); dropped: 20 -> 16.

Regenerated travis/insns/ (174 new mnemonic dirs for the APX scc
families; existing 2432 regenerated byte-identically, confirming
determinism). Full suite validated both via
tools/travis/nasm-t.py --directory=./travis run (4427 total, 4426
PASS, 1 pre-existing SKIP, 0 FAIL) and via make -j32 travis (all
tests PASS, ~28s).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
H. Peter Anvin (Intel) 2026-07-02 00:05:47 -07:00
parent c95b04bc7d
commit 35016d4880
729 changed files with 4791 additions and 55 deletions

View file

@ -284,7 +284,7 @@ PERLREQ_CLEANABLE = \
PERLREQ = $(PERLREQ_CLEANABLE)
INSDEP = x86/insns.xda x86/insns.pl x86/insns-iflags.ph x86/iflags.ph
INSDEP = x86/insns.xda x86/insns.pl x86/insns-iflags.ph x86/iflags.ph x86/insns-cc.ph
x86/insns.xda: x86/insns.dat x86/preinsns.pl $(DIRS)
$(RUNPERL) $(srcdir)/x86/preinsns.pl $(srcdir)/x86/insns.dat $@

View file

@ -8,7 +8,7 @@ into the existing `tools/travis/nasm-t.py` harness. This gives every
instruction-set pattern regression coverage without hand-writing
thousands of test cases.
The generated tree currently checked in lives at `travis/insns/` (2432
The generated tree currently checked in lives at `travis/insns/` (2606
mnemonic subdirectories as of the last full run).
## Usage
@ -100,19 +100,30 @@ targets.
## Condition-code mnemonic families
`insns.xda` leaves condition-code instruction families as literal,
unexpanded placeholders: `Jcc`, `SETcc`, `CMOVcc`, `CFCMOVcc`. Unlike
`$bwdq`-style width macros (which `insns.pl` *does* pre-expand into
concrete lines in `.xda`), NASM's parser expands condition codes against
its own cc-table at parse time — so the literal placeholder mnemonic
isn't directly assemblable. The generator expands these four families
itself into concrete mnemonics (`JE`, `SETNZ`, `CMOVGE`, ...) using the
16 canonical condition-code suffixes
(`o no b ae e ne be a s ns p np l ge le g`).
unexpanded placeholders: `Jcc`, `SETcc`, `CMOVcc`, `CFCMOVcc` (the "cc"
family) and the newer APX `CCMPscc`, `CTESTscc`, `CMPccXADD`, `SETccZU`
(the "scc" family). Unlike `$bwdq`-style width macros (which `insns.pl`
*does* pre-expand into concrete lines in `.xda`), NASM's parser expands
condition codes against its own cc-table at parse time — and
`x86/insns.pl`'s own `conditional_forms()` performs the equivalent
expansion for the C-code generators, but only *after* `insns.xda` has
already been written by `preinsns.pl`, so the placeholders reach this
tool unexpanded either way.
**Known gap:** the newer APX condition-suffix families (`CCMPscc`,
`CTESTscc`, `CMPccXADD`, `SETccZU`) are *not* expanded and are currently
dropped as unsupported. Extending the `@cc_suffixes` expansion loop to
cover these would close this gap.
The condition-code table (`%conds`, plus the `$c_cc`/`$c_scc` masks
distinguishing which suffixes are valid for which family) is shared
between `insns.pl` and this generator via `x86/insns-cc.ph`, a small
Perl module `require`d by both — this guarantees the two expansions
never drift out of sync, since there's only one copy of the
suffix/mask data. `cc_suffix_list($is_scc)` (defined in that module)
returns the applicable suffix list for either family, and the generator
mirrors `insns.pl`'s own detection (`$mnem =~ /s?cc/`, case-sensitive)
and substitution (`$mnem =~ s/s?cc/\U$suffix/`) exactly, so e.g. `Jcc`
expands to `JE`/`JNE`/`JGE`/... , `CCMPscc` expands to `CCMPE`/
`CCMPNE`/... (excluding the "cc"-only suffixes `pe`/`po`/`p`/`np`, which
aren't valid for `scc`-family instructions), and `SETccZU` expands to
`SETNEZU`/... . Any future new "cc"/"scc" family added to `insns.dat`
is picked up automatically without changes to this script.
## Bit-width (16/32/64) handling
@ -175,15 +186,15 @@ The generator prints a coverage summary at the end of each run
unsupported operand-type tokens), so gaps are self-documenting. As of
the last full run:
- **2432 / 2452 mnemonics generate at least one assemblable template.**
- **20 mnemonics produce zero output and are dropped**, mostly:
- **2606 / 2622 mnemonics generate at least one assemblable template**
(includes all concrete expansions of the `cc`/`scc` condition-code
families — see above).
- **16 mnemonics produce zero output and are dropped**, mostly:
- `HINT_NOP0` .. `HINT_NOP63` placeholder mnemonics,
- `LOADALL` / `LOADALL286`,
- a handful of exotic AMX-transpose / APX instructions whose full
operand grammar wasn't targeted (e.g. `T2RPNTLVWZ0*`, `TCONJT*`,
`TTMMULTF32PS`).
- APX `scc`-suffix condition-code families (`CCMPscc`, `CTESTscc`,
`CMPccXADD`, `SETccZU`) are not expanded (see above).
- Memory/vsib operands only exercise base-register-free addressing
forms (see above) — true base+index+scale+disp combinations aren't
covered by generated tests.
@ -207,5 +218,5 @@ tests + `travis/insns/`):
python3 tools/travis/nasm-t.py --nasm=./nasm --directory=./travis run
```
4225 tests total, 4224 PASS, 1 pre-existing SKIP (`time`, an
4427 tests total, 4426 PASS, 1 pre-existing SKIP (`time`, an
intentional/known skip unrelated to this tool), 0 FAIL, 0 ABORT.

View file

@ -91,14 +91,19 @@ GetOptions(
my %by_mnemonic; # mnemonic => [ { ops => [...], flags => {...} }, ... ]
# insns.xda leaves condition-code instruction *families* as literal
# "cc"-suffixed placeholders (e.g. mnemonic "Jcc") -- the parser
# expands these against a condition-code table at parse time rather
# than insns.pl expanding them into per-condition lines the way the
# $bwdq-style width macros are expanded. Mirror that expansion here so
# concrete, testable mnemonics (JE, SETNZ, CMOVGE, ...) get generated
# instead of the unusable literal placeholder.
my @cc_suffixes = qw(o no b ae e ne be a s ns p np l ge le g);
my %cc_families = map { $_ => 1 } qw(Jcc SETcc CMOVcc CFCMOVcc);
# "...cc"/"...scc"-suffixed placeholders (Jcc, SETcc, CMOVcc, CFCMOVcc,
# CCMPscc, CTESTscc, CMPccXADD, SETccZU) -- x86/insns.pl's own
# conditional_forms() expands these into one concrete pattern per
# applicable condition code, but that expansion happens *after*
# insns.xda is generated (insns.xda comes from preinsns.pl), so the
# placeholders reach us unexpanded. Mirror insns.pl's own detection
# (case-sensitive "/s?cc/" match) and expansion using the shared
# x86/insns-cc.ph condition-code tables, so concrete, testable
# mnemonics (JE, SETNZ, CMOVGE, CCMPNE, SETccZU -> SETNEZU, ...) get
# generated instead of the unusable literal placeholder, and any
# future new cc/scc family added to insns.dat is picked up
# automatically without touching this script.
require 'x86/insns-cc.ph';
open(my $xda, '<', $xda_file) or die "cannot open $xda_file: $!\n";
while (my $line = <$xda>) {
@ -114,10 +119,10 @@ while (my $line = <$xda>) {
my @ops = ($opstr eq 'void') ? () : split(/,/, $opstr);
if ($cc_families{$mnem}) {
(my $prefix = $mnem) =~ s/cc$//;
for my $suf (@cc_suffixes) {
my $concrete = uc($prefix . $suf);
if ($mnem =~ /s?cc/) { # case-sensitive, same as insns.pl
my $is_scc = ($mnem =~ /scc/);
for my $suf (cc_suffix_list($is_scc)) {
(my $concrete = $mnem) =~ s/s?cc/\U$suf/;
push @{ $by_mnemonic{$concrete} }, { ops => \@ops, flags => \%flags };
}
next;

View file

@ -0,0 +1,9 @@
default rel
ccmp 6, byte [0xe6d], dl
ccmp 10, cl, al
ccmp 1, si, bp
ccmp 10, word [0x708], dx
ccmp 10, ebx, esi
ccmp 10, esi, ebx
ccmp 1, qword [0x7aa], rax
ccmp 3, rcx, rbp

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMP",
"id": "ccmp64",
"format": "bin",
"source": "ccmp.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmp/",
"target": [
{ "output": "ccmp.bin64", "match": "ccmp.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmp 6, byte [0xe6d], dl
ccmp 10, cl, al
ccmp 1, si, bp
ccmp 10, word [0x708], dx
ccmp 10, ebx, esi
ccmp 10, esi, ebx

View file

@ -0,0 +1,9 @@
default rel
ccmpa 10, dl, bl
ccmpa 4, byte [0xd64], dl
ccmpa 12, di, ax
ccmpa 12, word [0x106], si
ccmpa 0, dword [0x1c4], ebp
ccmpa 9, ecx, eax
ccmpa 4, rbx, rax
ccmpa 13, qword [0x89e], rbx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPA",
"id": "ccmpa64",
"format": "bin",
"source": "ccmpa.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpa/",
"target": [
{ "output": "ccmpa.bin64", "match": "ccmpa.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpa 10, dl, bl
ccmpa 4, byte [0xd64], dl
ccmpa 12, di, ax
ccmpa 12, word [0x106], si
ccmpa 0, dword [0x1c4], ebp
ccmpa 9, ecx, eax

View file

@ -0,0 +1,9 @@
default rel
ccmpae 8, byte [0x14d], dl
ccmpae 10, al, al
ccmpae 14, si, cx
ccmpae 13, word [0x472], si
ccmpae 4, edi, edi
ccmpae 10, esi, eax
ccmpae 5, qword [0xa79], rbp
ccmpae 2, qword [0x76d], rdi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPAE",
"id": "ccmpae64",
"format": "bin",
"source": "ccmpae.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpae/",
"target": [
{ "output": "ccmpae.bin64", "match": "ccmpae.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpae 8, byte [0x14d], dl
ccmpae 10, al, al
ccmpae 14, si, cx
ccmpae 13, word [0x472], si
ccmpae 4, edi, edi
ccmpae 10, esi, eax

View file

@ -0,0 +1,9 @@
default rel
ccmpb 11, bl, bl
ccmpb 11, cl, al
ccmpb 13, si, cx
ccmpb 10, word [0x474], dx
ccmpb 14, eax, ecx
ccmpb 3, ebp, eax
ccmpb 5, rcx, rcx
ccmpb 13, rsi, rdx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPB",
"id": "ccmpb64",
"format": "bin",
"source": "ccmpb.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpb/",
"target": [
{ "output": "ccmpb.bin64", "match": "ccmpb.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpb 11, bl, bl
ccmpb 11, cl, al
ccmpb 13, si, cx
ccmpb 10, word [0x474], dx
ccmpb 14, eax, ecx
ccmpb 3, ebp, eax

View file

@ -0,0 +1,9 @@
default rel
ccmpbe 6, dl, bl
ccmpbe 9, cl, al
ccmpbe 12, cx, di
ccmpbe 2, di, di
ccmpbe 11, dword [0x3b2], ebp
ccmpbe 2, eax, esi
ccmpbe 0, qword [0xdd8], rdi
ccmpbe 10, rsi, rdi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPBE",
"id": "ccmpbe64",
"format": "bin",
"source": "ccmpbe.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpbe/",
"target": [
{ "output": "ccmpbe.bin64", "match": "ccmpbe.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpbe 6, dl, bl
ccmpbe 9, cl, al
ccmpbe 12, cx, di
ccmpbe 2, di, di
ccmpbe 11, dword [0x3b2], ebp
ccmpbe 2, eax, esi

View file

@ -0,0 +1,9 @@
default rel
ccmpc 9, al, dl
ccmpc 2, bl, cl
ccmpc 11, word [0x48b], ax
ccmpc 5, dx, si
ccmpc 5, ebp, eax
ccmpc 14, dword [0x17b], ebp
ccmpc 11, rax, rsi
ccmpc 13, qword [0x544], rdi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPC",
"id": "ccmpc64",
"format": "bin",
"source": "ccmpc.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpc/",
"target": [
{ "output": "ccmpc.bin64", "match": "ccmpc.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpc 9, al, dl
ccmpc 2, bl, cl
ccmpc 11, word [0x48b], ax
ccmpc 5, dx, si
ccmpc 5, ebp, eax
ccmpc 14, dword [0x17b], ebp

View file

@ -0,0 +1,9 @@
default rel
ccmpe 7, al, bl
ccmpe 13, cl, al
ccmpe 2, si, dx
ccmpe 3, cx, dx
ccmpe 12, eax, ecx
ccmpe 2, edi, edi
ccmpe 5, rbx, rbp
ccmpe 3, qword [0x8ec], rdx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPE",
"id": "ccmpe64",
"format": "bin",
"source": "ccmpe.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpe/",
"target": [
{ "output": "ccmpe.bin64", "match": "ccmpe.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpe 7, al, bl
ccmpe 13, cl, al
ccmpe 2, si, dx
ccmpe 3, cx, dx
ccmpe 12, eax, ecx
ccmpe 2, edi, edi

View file

@ -0,0 +1,9 @@
default rel
ccmpf 2, al, al
ccmpf 7, byte [0x46d], cl
ccmpf 10, word [0xff0], bx
ccmpf 7, word [0xf74], ax
ccmpf 4, edi, esi
ccmpf 4, ecx, ebx
ccmpf 3, rsi, rbp
ccmpf 0, qword [0x4ee], rbx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPF",
"id": "ccmpf64",
"format": "bin",
"source": "ccmpf.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpf/",
"target": [
{ "output": "ccmpf.bin64", "match": "ccmpf.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpf 2, al, al
ccmpf 7, byte [0x46d], cl
ccmpf 10, word [0xff0], bx
ccmpf 7, word [0xf74], ax
ccmpf 4, edi, esi
ccmpf 4, ecx, ebx

View file

@ -0,0 +1,9 @@
default rel
ccmpg 3, byte [0x4d4], bl
ccmpg 6, al, dl
ccmpg 0, word [0x421], dx
ccmpg 15, word [0xbdb], dx
ccmpg 13, dword [0x786], edx
ccmpg 13, ebp, ecx
ccmpg 1, rcx, rdi
ccmpg 4, rdx, rbx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPG",
"id": "ccmpg64",
"format": "bin",
"source": "ccmpg.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpg/",
"target": [
{ "output": "ccmpg.bin64", "match": "ccmpg.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpg 3, byte [0x4d4], bl
ccmpg 6, al, dl
ccmpg 0, word [0x421], dx
ccmpg 15, word [0xbdb], dx
ccmpg 13, dword [0x786], edx
ccmpg 13, ebp, ecx

View file

@ -0,0 +1,9 @@
default rel
ccmpge 7, bl, bl
ccmpge 12, cl, cl
ccmpge 4, bx, bx
ccmpge 4, bp, bx
ccmpge 2, edi, edx
ccmpge 0, ebx, ebx
ccmpge 10, rbx, rdx
ccmpge 11, rdx, rdx

View file

@ -0,0 +1 @@
< 8лbєd 8Щbє% 9лbє% 9нbє 9зbє 9лbєд 9гbєм 9в

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPGE",
"id": "ccmpge64",
"format": "bin",
"source": "ccmpge.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpge/",
"target": [
{ "output": "ccmpge.bin64", "match": "ccmpge.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpge 7, bl, bl
ccmpge 12, cl, cl
ccmpge 4, bx, bx
ccmpge 4, bp, bx
ccmpge 2, edi, edx
ccmpge 0, ebx, ebx

View file

@ -0,0 +1,9 @@
default rel
ccmpl 8, dl, al
ccmpl 5, dl, cl
ccmpl 1, word [0xf8a], cx
ccmpl 7, word [0x4d1], ax
ccmpl 9, eax, esi
ccmpl 15, ebx, eax
ccmpl 15, qword [0x50c], rbx
ccmpl 10, qword [0xabe], rsi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPL",
"id": "ccmpl64",
"format": "bin",
"source": "ccmpl.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpl/",
"target": [
{ "output": "ccmpl.bin64", "match": "ccmpl.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpl 8, dl, al
ccmpl 5, dl, cl
ccmpl 1, word [0xf8a], cx
ccmpl 7, word [0x4d1], ax
ccmpl 9, eax, esi
ccmpl 15, ebx, eax

View file

@ -0,0 +1,9 @@
default rel
ccmple 4, bl, cl
ccmple 3, cl, al
ccmple 10, ax, di
ccmple 0, word [0x69e], ax
ccmple 12, ebp, esi
ccmple 9, ecx, ecx
ccmple 14, rdx, rbp
ccmple 12, rbp, rcx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPLE",
"id": "ccmple64",
"format": "bin",
"source": "ccmple.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmple/",
"target": [
{ "output": "ccmple.bin64", "match": "ccmple.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmple 4, bl, cl
ccmple 3, cl, al
ccmple 10, ax, di
ccmple 0, word [0x69e], ax
ccmple 12, ebp, esi
ccmple 9, ecx, ecx

View file

@ -0,0 +1,9 @@
default rel
ccmpna 7, byte [0xfa6], bl
ccmpna 13, cl, bl
ccmpna 15, cx, bp
ccmpna 4, ax, bp
ccmpna 10, edx, ebx
ccmpna 2, ebp, ecx
ccmpna 13, rbp, rsi
ccmpna 12, rax, rsi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNA",
"id": "ccmpna64",
"format": "bin",
"source": "ccmpna.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpna/",
"target": [
{ "output": "ccmpna.bin64", "match": "ccmpna.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpna 7, byte [0xfa6], bl
ccmpna 13, cl, bl
ccmpna 15, cx, bp
ccmpna 4, ax, bp
ccmpna 10, edx, ebx
ccmpna 2, ebp, ecx

View file

@ -0,0 +1,9 @@
default rel
ccmpnae 15, byte [0xc08], dl
ccmpnae 1, dl, bl
ccmpnae 8, bx, dx
ccmpnae 9, cx, cx
ccmpnae 5, ecx, eax
ccmpnae 3, dword [0x868], edi
ccmpnae 14, rdx, rsi
ccmpnae 15, rcx, rsi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNAE",
"id": "ccmpnae64",
"format": "bin",
"source": "ccmpnae.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnae/",
"target": [
{ "output": "ccmpnae.bin64", "match": "ccmpnae.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnae 15, byte [0xc08], dl
ccmpnae 1, dl, bl
ccmpnae 8, bx, dx
ccmpnae 9, cx, cx
ccmpnae 5, ecx, eax
ccmpnae 3, dword [0x868], edi

View file

@ -0,0 +1,9 @@
default rel
ccmpnb 2, byte [0x683], cl
ccmpnb 2, bl, cl
ccmpnb 4, bx, ax
ccmpnb 10, dx, di
ccmpnb 8, edx, ecx
ccmpnb 0, ecx, edi
ccmpnb 2, rdx, rbp
ccmpnb 8, rcx, rbp

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNB",
"id": "ccmpnb64",
"format": "bin",
"source": "ccmpnb.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnb/",
"target": [
{ "output": "ccmpnb.bin64", "match": "ccmpnb.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnb 2, byte [0x683], cl
ccmpnb 2, bl, cl
ccmpnb 4, bx, ax
ccmpnb 10, dx, di
ccmpnb 8, edx, ecx
ccmpnb 0, ecx, edi

View file

@ -0,0 +1,9 @@
default rel
ccmpnbe 10, al, al
ccmpnbe 0, bl, cl
ccmpnbe 7, word [0xb0f], di
ccmpnbe 9, bx, di
ccmpnbe 7, ebx, ecx
ccmpnbe 9, dword [0x645], eax
ccmpnbe 9, rcx, rbp
ccmpnbe 5, rdi, rdi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNBE",
"id": "ccmpnbe64",
"format": "bin",
"source": "ccmpnbe.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnbe/",
"target": [
{ "output": "ccmpnbe.bin64", "match": "ccmpnbe.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnbe 10, al, al
ccmpnbe 0, bl, cl
ccmpnbe 7, word [0xb0f], di
ccmpnbe 9, bx, di
ccmpnbe 7, ebx, ecx
ccmpnbe 9, dword [0x645], eax

View file

@ -0,0 +1,9 @@
default rel
ccmpnc 4, al, cl
ccmpnc 0, bl, cl
ccmpnc 11, word [0xf2c], bx
ccmpnc 4, bp, cx
ccmpnc 9, ebx, esi
ccmpnc 2, dword [0x6f7], ecx
ccmpnc 13, qword [0xa10], rdx
ccmpnc 4, rdx, rsi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNC",
"id": "ccmpnc64",
"format": "bin",
"source": "ccmpnc.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnc/",
"target": [
{ "output": "ccmpnc.bin64", "match": "ccmpnc.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnc 4, al, cl
ccmpnc 0, bl, cl
ccmpnc 11, word [0xf2c], bx
ccmpnc 4, bp, cx
ccmpnc 9, ebx, esi
ccmpnc 2, dword [0x6f7], ecx

View file

@ -0,0 +1,9 @@
default rel
ccmpne 9, byte [0x206], bl
ccmpne 14, cl, dl
ccmpne 5, word [0xfe2], bx
ccmpne 0, bp, di
ccmpne 4, dword [0xe30], esi
ccmpne 15, ebp, esi
ccmpne 13, qword [0x1a7], rcx
ccmpne 8, rsi, rbp

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNE",
"id": "ccmpne64",
"format": "bin",
"source": "ccmpne.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpne/",
"target": [
{ "output": "ccmpne.bin64", "match": "ccmpne.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpne 9, byte [0x206], bl
ccmpne 14, cl, dl
ccmpne 5, word [0xfe2], bx
ccmpne 0, bp, di
ccmpne 4, dword [0xe30], esi
ccmpne 15, ebp, esi

View file

@ -0,0 +1,9 @@
default rel
ccmpng 14, cl, bl
ccmpng 6, dl, cl
ccmpng 13, bx, bp
ccmpng 5, word [0xc46], si
ccmpng 3, eax, ebx
ccmpng 15, dword [0xbc9], edx
ccmpng 8, rdi, rdx
ccmpng 2, rax, rbx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNG",
"id": "ccmpng64",
"format": "bin",
"source": "ccmpng.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpng/",
"target": [
{ "output": "ccmpng.bin64", "match": "ccmpng.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpng 14, cl, bl
ccmpng 6, dl, cl
ccmpng 13, bx, bp
ccmpng 5, word [0xc46], si
ccmpng 3, eax, ebx
ccmpng 15, dword [0xbc9], edx

View file

@ -0,0 +1,9 @@
default rel
ccmpnge 6, cl, bl
ccmpnge 15, byte [0x9ed], cl
ccmpnge 15, si, bx
ccmpnge 8, ax, cx
ccmpnge 8, dword [0xe6c], ebp
ccmpnge 14, dword [0x4ae], ebp
ccmpnge 2, rbx, rdi
ccmpnge 11, rdx, rbp

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNGE",
"id": "ccmpnge64",
"format": "bin",
"source": "ccmpnge.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnge/",
"target": [
{ "output": "ccmpnge.bin64", "match": "ccmpnge.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnge 6, cl, bl
ccmpnge 15, byte [0x9ed], cl
ccmpnge 15, si, bx
ccmpnge 8, ax, cx
ccmpnge 8, dword [0xe6c], ebp
ccmpnge 14, dword [0x4ae], ebp

View file

@ -0,0 +1,9 @@
default rel
ccmpnl 11, bl, al
ccmpnl 7, byte [0xae7], bl
ccmpnl 13, bx, si
ccmpnl 2, word [0xd24], bp
ccmpnl 13, dword [0x8ce], edi
ccmpnl 14, dword [0x99f], ebp
ccmpnl 2, rdi, rbx
ccmpnl 1, rbx, rsi

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNL",
"id": "ccmpnl64",
"format": "bin",
"source": "ccmpnl.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnl/",
"target": [
{ "output": "ccmpnl.bin64", "match": "ccmpnl.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnl 11, bl, al
ccmpnl 7, byte [0xae7], bl
ccmpnl 13, bx, si
ccmpnl 2, word [0xd24], bp
ccmpnl 13, dword [0x8ce], edi
ccmpnl 14, dword [0x99f], ebp

View file

@ -0,0 +1,9 @@
default rel
ccmpnle 2, byte [0x810], cl
ccmpnle 7, byte [0xf3a], al
ccmpnle 13, cx, bp
ccmpnle 9, word [0x9b9], dx
ccmpnle 4, eax, esi
ccmpnle 5, dword [0xbf9], eax
ccmpnle 9, qword [0x337], rdx
ccmpnle 9, rax, rdx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNLE",
"id": "ccmpnle64",
"format": "bin",
"source": "ccmpnle.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpnle/",
"target": [
{ "output": "ccmpnle.bin64", "match": "ccmpnle.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpnle 2, byte [0x810], cl
ccmpnle 7, byte [0xf3a], al
ccmpnle 13, cx, bp
ccmpnle 9, word [0x9b9], dx
ccmpnle 4, eax, esi
ccmpnle 5, dword [0xbf9], eax

View file

@ -0,0 +1,9 @@
default rel
ccmpno 0, dl, dl
ccmpno 14, bl, bl
ccmpno 12, word [0x212], bx
ccmpno 0, ax, bx
ccmpno 3, ebp, eax
ccmpno 12, ebx, edi
ccmpno 8, qword [0xf51], rbp
ccmpno 4, rcx, rcx

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNO",
"id": "ccmpno64",
"format": "bin",
"source": "ccmpno.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpno/",
"target": [
{ "output": "ccmpno.bin64", "match": "ccmpno.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpno 0, dl, dl
ccmpno 14, bl, bl
ccmpno 12, word [0x212], bx
ccmpno 0, ax, bx
ccmpno 3, ebp, eax
ccmpno 12, ebx, edi

View file

@ -0,0 +1,9 @@
default rel
ccmpns 11, byte [0x13f], al
ccmpns 0, cl, al
ccmpns 13, word [0x612], si
ccmpns 1, bx, dx
ccmpns 12, ebx, ecx
ccmpns 2, ecx, edx
ccmpns 6, qword [0xa3e], rsi
ccmpns 1, qword [0xabb], rbp

Binary file not shown.

View file

@ -0,0 +1,12 @@
[
{
"description": "Pseudorandom test for CCMPNS",
"id": "ccmpns64",
"format": "bin",
"source": "ccmpns.asm",
"option": "--bits 64 -w-ea-absolute -w-implicit-abs-deprecated -I./travis/insns/ccmpns/",
"target": [
{ "output": "ccmpns.bin64", "match": "ccmpns.bin64.t" }
]
}
]

View file

@ -0,0 +1,6 @@
ccmpns 11, byte [0x13f], al
ccmpns 0, cl, al
ccmpns 13, word [0x612], si
ccmpns 1, bx, dx
ccmpns 12, ebx, ecx
ccmpns 2, ecx, edx

View file

@ -0,0 +1,9 @@
default rel
ccmpnz 9, byte [0x4f5], dl
ccmpnz 4, byte [0xe75], cl
ccmpnz 11, ax, bx
ccmpnz 12, bp, dx
ccmpnz 9, esi, edi
ccmpnz 5, ebp, ebx
ccmpnz 3, rdi, rbx
ccmpnz 14, rsi, rax

Some files were not shown because too many files have changed in this diff Show more