Commit Graph

312 Commits

Author SHA1 Message Date
Cyrill Gorcunov
3acd53c72f BR3385573: insns: Fix VPMOVSXBW
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-03-06 11:12:17 +04:00
H. Peter Anvin
b106ba161f Try again to fix our handling of MOVD/MOVQ
Try to implement the handling of MOVD as attempted in checkin:

    70712c0df6

and reverted in:

    d279fbbd80

due to BR3392199.  This time make sure to use the SX flag to only
match when a size is explicitly given, and also don't duplicate the 0F
6F/7F opcodes, which are documented as MOVQ by AMD as well as Intel.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-03-05 22:37:21 -08:00
H. Peter Anvin
0d008c52ab insns.dat: MOV is not lockable; CMPXCHG16B does not support HLE
Using a LOCK prefix with MOV is not permitted.
The CMPXCHG16B instruction is not defined to support HLE.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-25 22:38:42 -08:00
H. Peter Anvin
fb3f4e6ddb HLE: Change NOHLE to be an instruction flag
The way our matching system works we have to make NOHLE an instruction
flag rather than an byte code; by the time we run the byte code
interpreter we have already picked an instruction pattern once and for
all.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-25 22:22:07 -08:00
H. Peter Anvin
7687dded2d Assume the undocumented CMPXCHG486 opcode was lockable
Someone who actually knows about this opcode and has a 486 to test on
may want to verify this.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-25 12:35:33 -08:00
Cyrill Gorcunov
a94601f83c insns.dat: Add IF_LOCK flag on appropriate instructions
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-26 00:25:37 +04:00
H. Peter Anvin
c3bfc7f643 Clean up JMP/CALL patterns, especially for 64 bits
Clean up JMP/CALL patterns so they don't disassemble quite so uglily.
Fix a CALL pattern which would have incorrectly generated a (harmless)
REX.W prefix.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-25 12:13:50 -08:00
Cyrill Gorcunov
b496c68f91 insns.dat: Add nohle for MOV in case of moffset destination
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-26 00:07:27 +04:00
Cyrill Gorcunov
922f5e2dac insns.dat: Add hlexr flag for MOV instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
ab6057926b insns.dat: Add hlenl flag for XCHG instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
93e170f585 insns.dat: Add hle flag for XADD instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
5c4d23a039 insns.dat: Add hle flag for XOR instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
3403477b96 insns.dat: Add hle flag for SUB instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
b556a03847 insns.dat: Add hle flag for SBB instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
0626db9eb9 insns.dat: Add hle flag for OR instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
7d072f0ca9 insns.dat: Add hle flag for NOT instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:09 +04:00
Cyrill Gorcunov
7aec2435f6 insns.dat: Add hle flag for NEG instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:53:08 +04:00
Cyrill Gorcunov
94a7645ec9 insns.dat: Add hle flag for INC instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:45 +04:00
Cyrill Gorcunov
47fe219004 insns.dat: Add hle flag for DEC instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
e520db7f49 insns.dat: Add hle flag for CMPXCHG16B instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
aea6453c8b insns.dat: Add hle flag for CMPXCHG8B instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
08a291d0da insns.dat: Add hle flag for CMPXCHG instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
6763e28b68 insns.dat: Add hle flag for BTS instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
e7a9ec3676 insns.dat: Add hle flag for BTR instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
75150e2df4 insns.dat: Add hle flag for BTC instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
e844844321 insns.dat: Add hle flag for AND instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
e30aef38da insns.dat: Add hle flag for ADC instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
Cyrill Gorcunov
dec6037fa7 insns.dat: Add hle flag for ADD instruction
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-25 23:51:44 +04:00
H. Peter Anvin
755f5214b7 Remove all remaining explicit bytecodes from insns.dat
Get rid of the last vestiges of the explicit byte codes in insns.dat.
The only files that now depend on actual byte code numbers are
insns.pl, assemble.c and disasm.c.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-25 11:41:34 -08:00
H. Peter Anvin
44454be952 insns: create a symbolic "wait" token for the \341 byte code
Create a symbolic name "wait" for the \341 byte code, so we don't have
to open-code it.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-10 11:11:08 -08:00
H. Peter Anvin
b17da041cb insns: fix IMUL patterns to get rid of open-coded \100 bytecodes
There already is a standard encoding for "use this operand in multiple
slots"; no need to open-code it.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-10 11:08:09 -08:00
H. Peter Anvin
e2b262beae insns: correct the TSX opcodes
All except XTEST are RTM, not HLE; XBEGIN is like a JMP or CALL.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-09 16:24:32 -08:00
Cyrill Gorcunov
d0f773230e insns: Add AVX2 transactional synchronization extensions
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2012-02-09 16:20:57 -08:00
H. Peter Anvin
9d93f4b396 insns: replace open-coded \322 opcode with odf (operand default)
Create a mnemonic for the open-coded opcode \322.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2012-02-09 16:20:21 -08:00
H. Peter Anvin
a56b70436e BR 3463230: Add VMFUNC instruction
Add VMFUNC instruction from the Intel SDM version 041.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2011-12-21 08:26:48 -08:00
Cyrill Gorcunov
4b6f98bdd6 insns: Fix up sizes for MOVSD and VMOVSS instructions
Reported-by: Jasper Neumann <jasper.neumann@scpsoftware.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-12-17 12:09:02 +04:00
Cyrill Gorcunov
d279fbbd80 BR3392199: Revert "insns: Add MOVD as aliases to MOVQ for compatibility with AMD"
This reverts commit 70712c0df6.

Conflicts:

	insns.dat

Our instructions matcher fuzzy logic fails to handle it at moment.

Reported-by: KO Myung-Hun <komh@chollian.net>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-11-20 17:16:43 +04:00
Cyrill Gorcunov
d96a329a78 insns.dat: Fix VPCMPEQQ template
http://bugzilla.nasm.us/show_bug.cgi?id=3392197

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-11-15 01:21:48 +04:00
Cyrill Gorcunov
013da29782 BR3392195: insns: Drop MMX flag from MOVD
Typo in specification.

Reported-by: Jasper Neumann <sirrida@web.de>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-11-12 09:47:27 +04:00
Cyrill Gorcunov
eb786412f6 insns: Fix typos for vcmpeq aliases
The patch came from herumi@nifty.com

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-11-11 13:04:20 +04:00
Cyrill Gorcunov
70712c0df6 insns: Add MOVD as aliases to MOVQ for compatibility with AMD
AMD has MOVD for both 32bit and 64bit GPRs so in a sake of
compatibility bring them into insns.dat.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-10-02 10:53:37 +04:00
Cyrill Gorcunov
9022212ba9 insns.dat: Fixup VGATHERx instructions
As being spotted by nasm64developer the memory
operands size is incorrect. Fix it.

Reported-by: nasm64developer
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-08-31 01:34:43 +04:00
Cyrill Gorcunov
db3f71bc67 insns, avx2: A couple of upper-case to lower-case conversion
Just to be solid in style

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-08-23 00:35:32 +04:00
Cyrill Gorcunov
b16bb628ce insns, avx2: A typo in VPERMPD
The second VPERMD should be VPERMPD actually.

Thanks to nasm64developer for gas test file provided
which allowed to reveal this issue.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-08-23 00:30:28 +04:00
Cyrill Gorcunov
4c78ab3474 BR3385573: Some AVX2 instructions fixups
A few instruction templates for AVX2 set were wrong.

Reported-by: Agner Fog
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-08-22 01:38:40 +04:00
Cyrill Gorcunov
c7970eb4a3 insns: Change VPERMPQ to VPERMQ
Was a typo

Reported-by: Agner Fog
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-08-03 22:16:29 +04:00
Anonymous
e837a7b4ea Implement insns.dat in human readable form
I converted almost all instructions in insns.dat (version
 7a6f978698) to the more
 readable format that insns.pl has supported for years.

 I also made some changes to insns.pl. You can verify that the
 new insns.dat and insns.pl produce byte-identical output to
 the old insns.dat and insns.pl, so I think that this change
 is safe to check in, even though it is a large change to
 insns.dat.

The changes to insns.pl are:

 * fixed a bug: ib,u was not recognized
 * added support for a second immediate argument called "j" for
   instructions like ENTER imm,imm
 * added a "+r" syntax for \10..\13

[gorcunov: insns files remains the same, great job anonymous!]

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-07-20 21:47:53 +04:00
Cyrill Gorcunov
f757614d48 insns: A final pile of AVX2 instructions
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-07-20 01:16:11 +04:00
Cyrill Gorcunov
7a0c878ffb insns: A few additional AVX2 templates
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-07-19 17:01:35 +04:00
Cyrill Gorcunov
7a6f978698 insns: One more small snippet of AVX2
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
2011-07-18 01:15:25 +04:00