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