Commit Graph

1137 Commits

Author SHA1 Message Date
H. Peter Anvin
eccd1acca9 Add the PCLMUL instructions (BR 1933742)
Add the PCLMUL group instructions, from the AVX spec but not actually
AVX instructions.
2008-05-21 14:28:42 -07:00
H. Peter Anvin
cf6682fb01 Add INVEPT and INVVPID (BR 1956955) 2008-05-21 14:17:33 -07:00
H. Peter Anvin
9d5d239a9d Use "o64nw" instead of "o64i" for o64 without REX.W
Use the somewhat more mnemonic "o64nw" for 64-bit operand size sans
REX.W.
2008-05-21 14:16:49 -07:00
H. Peter Anvin
bce9da223f Add the MOVBE instructions (BR 1956954)
Add the MOVBE instructions (load/store and swap)
2008-05-21 14:03:56 -07:00
H. Peter Anvin
36b47fdfdc insns.pl: readabilty improvements for isnsnd.c
Make insnsd.c a bit more consistent in style.
2008-05-21 11:18:12 -07:00
H. Peter Anvin
2fb033af18 Disassembler: select table based on VEX prefixes
We can use the new VEX prefixes to select into a large table of new
opcode spaces.  Since the table is (currently) sparse, add logic so we
don't end up producing tons of empty tables for no good reason.

This is also necessary since VEX is likely to reuse opcode bytes that
would appear as prefixes at some point, which would cause conflicts
with the regular tables.
2008-05-21 11:05:39 -07:00
H. Peter Anvin
eb9e093840 Fix skipping 0270 code when searching for disasm prefixes
The 0270 code was incorrectly entered as 270 (decimal), which meant
that instructions with vex but no .nds got misfiled in the improper
opcode tables.
2008-05-21 10:34:33 -07:00
H. Peter Anvin
39d6ac6f79 Fix display for fixed xmm0/ymm0, SSE redundant prefixes
All singleton registers need to be displayable from register flags
alone!

When using the new 0360..0363 codes, make sure we appropriate avoid
displaying the legacy use of the prefixes.
2008-05-21 10:33:19 -07:00
Philipp Thomas
76ec8e73db Fix buffer overflow in preproc.c (BR 1942146)
Fix buffer overflow in preproc.c due to an incorrect test.  In the
code:

        for (r = p, s = ourcopy; *r; r++) {
	    if (r >= p+MAX_KEYWORD)
	    	return tokval->t_type = TOKEN_ID; /* Not a keyword */
            *s++ = tolower(*r);
	    }
        *s = '\0';

... the test really needs to be >= since for the pass where there are
equal:

a) a nonzero byte means we have > MAX_KEYWORD characters, and
b) s = ourcopy+MAX_KEYWORD; but if the test doesn't trigger,
   we can write one more character *plus* the null byte, overflowing
   ourcopy.
2008-05-21 08:53:21 -07:00
H. Peter Anvin
18c3ce2517 insns typo fix: SSE5 FNM* instructions misspelled
The SSE5 FNM* instructions were misspelled as FMN*

(Bug 1930322)
2008-05-21 08:45:17 -07:00
H. Peter Anvin
2b524d5e62 Merge branch 'master' of git+ssh://repo.or.cz/srv/git/nasm 2008-05-21 08:42:55 -07:00
H. Peter Anvin
be5133cb13 UDx instructions are 186+, not 286+
The UDx instructions are valid as far back as the #UD trap, which is
the 186, not the 286.
2008-05-21 08:41:58 -07:00
Victor van den Elzen
1fc045591b Add automation to avx test. 2008-05-21 13:33:26 +02:00
Victor van den Elzen
82fa68acec Configure tests to be performed automatically 2008-05-21 12:42:46 +02:00
Victor van den Elzen
533385ace5 Add automated testing script 2008-05-21 12:42:45 +02:00
H. Peter Anvin
6b3b7bcd33 VEX prefixes apply to VEX instructions only... 2008-05-20 23:36:36 -07:00
H. Peter Anvin
c882715a8e AVX instructions up to VMINSS 2008-05-20 23:28:46 -07:00
H. Peter Anvin
330cbd1c90 A few more AVX instructions (up to VLDMXCSR)
More AVX instructions, up to VLDMXCSR
2008-05-20 23:16:27 -07:00
H. Peter Anvin
52dc353868 Handle is4 bytes without meaningful information in the bottom bits
Support is4 bytes without meaningful information in the bottom bits.
This is equivalent to /is4=0 for the assembler, but makes the bottom
bits don't care for the disassembler.
2008-05-20 19:29:04 -07:00
H. Peter Anvin
21513e822f inslist.pl: deal with the new encoding format
Make it possible for inslist.pl to understand the new encoding format;
fix a few minor buglets.
2008-05-20 18:33:40 -07:00
H. Peter Anvin
2d31ec106a Officially specify - as the symbol for an implicit operand
Use - to denote that an operand is implicit (not encoded).  This
*better* be a fixed operand!
2008-05-20 18:21:11 -07:00
H. Peter Anvin
9681ef4144 AVX: implement all the convert instructions...
Make our way through the AVX instructions: conversions.
This is all I have time for now... hopefully this can service as a
generous source of examples.
2008-05-20 18:14:30 -07:00
H. Peter Anvin
4ae88e1a83 Accept the gas mnemonics "ud2a" and "ud2b"; fix ud0
Accept the gas mnemonics "ud2a" and "ud2b" for the instructions we
call ud2 and ud1 respectively, and Intel call ud2 and undocumented :)

Also, 0F FF is ud0 regardless of prefixes, at least as far as we know.
2008-05-20 17:14:17 -07:00
H. Peter Anvin
0ab96a17d5 ndisasm: simple compare for conditional opcodes, no loop
We had a completely unnecessary loop to test for conditional opcodes.
Since we always put the conditional opcodes at the end, we might as
well just remember where that list starts and compare against it.
2008-05-20 17:07:57 -07:00
H. Peter Anvin
f99359c03a Finish the VCMP series... 2008-05-20 16:59:17 -07:00
H. Peter Anvin
e6d0eb4d68 More AVX instructions
Add additional AVX instructions to the list.
2008-05-20 16:48:34 -07:00
H. Peter Anvin
670219a2c0 Make the syntax for immediates match the docs better
Use a more manual-like syntax for immediates (we still may have to use
extended syntax, but not always.)
2008-05-20 16:47:42 -07:00
H. Peter Anvin
ee7fc29a30 Add support for ymm0 in instructions
Make it possible to use ymm0 as a fixed operand in instructions
2008-05-20 16:47:12 -07:00
H. Peter Anvin
711b0c1e39 phash: cut random vector set down a bit
Reduce the size of the random vector set somewhat
2008-05-20 16:46:36 -07:00
H. Peter Anvin
3be5d85913 No 32-byte floating point format: fix error for DY
Output a more legible error message for floating-point with "DY".
2008-05-20 14:49:32 -07:00
H. Peter Anvin
0c648204e2 openwcom.mak: wmake uses & for continuation, not \ (sigh)
wmake uses & for continuation, since \ is used for pathname
separators.
2008-05-20 14:42:53 -07:00
H. Peter Anvin
d1dab0f720 Readability improvements for regdis.c 2008-05-20 14:39:36 -07:00
H. Peter Anvin
f176537c1b netware.mak: correct dependencies
The Makefile uses VPATH and stripped directory names for files, so
generate the dependencies accordingly.
2008-05-20 14:35:34 -07:00
H. Peter Anvin
9726b1e971 rdx: Add cast avoid warning from gcc
Avoid a warning from gcc about casting an integer of different size to
a pointer.
2008-05-20 14:25:36 -07:00
H. Peter Anvin
a4835d466c Avoid #including .c files; instead compile as separate units
Don't #include .c files, even if they are auto-generated; instead
compile them as separate compilation units and let the linker do its
job.
2008-05-20 14:21:29 -07:00
H. Peter Anvin
73252a92ae PTEST is SSE4.1; although AMD says it's SSE5.
Fix this when we have proper support for feature sets, or forget about
the concept entirely.
2008-05-20 13:07:09 -07:00
H. Peter Anvin
b726b04813 insns.pl: don't require whitespace before / or \
Use Perl's context-sensitive regular expressions to tell split that a
slash or backslash begins a new operator.
2008-05-20 13:03:39 -07:00
H. Peter Anvin
930d655916 nasm.h: remove obsolete IP_REG definitions 2008-05-20 11:47:01 -07:00
H. Peter Anvin
dfb918047b Add DY, YWORD, and the SY instruction flag
Add the DY instruction, YWORD keyword, and an SY marker for
instruction sizes.  Add a few more AVX sample instructions.
2008-05-20 11:43:53 -07:00
H. Peter Anvin
70a13f5a37 insns.pl: support operands that serve double duty
Sometimes assembly syntax wants to permit a single operand to serve
multiple functions; allow this.

The disassembler could really use to be smarter about those.
2008-05-20 11:23:18 -07:00
H. Peter Anvin
d82dd4f1a3 insns.dat: no subheader for "must be last" 2008-05-20 11:05:59 -07:00
H. Peter Anvin
1e5203872d insns.dat: make even wider to make space for AVX
The AVX instructions take more space, so add a few tab stops across
the entire file.
2008-05-20 11:04:26 -07:00
H. Peter Anvin
8597e6900c insns.dat: use compiler-generated bytecodes for AVX
Use compiler-generated bytecodes for the AVX instruction demos.  This
should make it a lot easier for other people (HINT, HINT) to add the
instruction table.
2008-05-20 11:01:28 -07:00
H. Peter Anvin
0fc86cca1f insns.pl: fix regex subgroup of /is4= codes
The argument is now $1, not $2...
2008-05-20 10:48:22 -07:00
H. Peter Anvin
8491986e69 insns.pl: fix splitting of bracketted operations 2008-05-20 10:39:15 -07:00
H. Peter Anvin
0686131bbe Opcode listing notation is /is4, consistently 2008-05-20 10:29:11 -07:00
H. Peter Anvin
2812ff5181 Use the \360..\363 annotations for SSE prefixes 2008-05-20 10:21:57 -07:00
H. Peter Anvin
fff5a47e65 Same some space by introducing shorthand byte codes for SSE prefixes
Properly done, all SSE instructions which has the 66/F2/F3 opcode
multiplex need two prefixes: one to control the use of OSP and one to
control the use of REP.  However, it's a four-way select: np/66/F2/F3;
so introduce shorthand bytecodes for that purpose.
2008-05-20 09:46:24 -07:00
H. Peter Anvin
24860b0f0e Allow explicit immediate syntax for imz2 as well as is4
imz2 is just an alias for is4 as far as we are concerned...
2008-05-20 09:36:41 -07:00
H. Peter Anvin
e6fb38b9f2 insns.pl: escape literal special character in regex
In Perl code, it is good practice to escape special characters
intended to be literal.
2008-05-19 21:10:14 -07:00