|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| | llvm-svn: 161030 | 
| | 
| 
| 
| 
| 
| | Shaves 150k off the size of X86DisassemblerDecoder.o
llvm-svn: 151995 | 
| | 
| 
| 
| 
| 
| | Kay Tiong Khoo.
llvm-svn: 151510 | 
| | 
| 
| 
| | llvm-svn: 150918 | 
| | 
| 
| 
| 
| 
| 
| | This requires some gymnastics to make it available for C code. Remove the names
from the disassembler tables, making them relocation free.
llvm-svn: 150303 | 
| | 
| 
| 
| | llvm-svn: 150167 | 
| | 
| 
| 
| 
| 
| | needed to store pointers on 64-bit hosts and reduce relocations needed at startup. Part of PR11953.
llvm-svn: 150161 | 
| | 
| 
| 
| 
| 
| | necessary)
llvm-svn: 148284 | 
| | 
| 
| 
| | llvm-svn: 143895 | 
| | 
| 
| 
| 
| 
| | for 64BIT_REXW_XD not existing, but it does exist.
llvm-svn: 141642 | 
| | 
| 
| 
| 
| 
| | 64-bit mode. This is because in 64-bit mode xchg %eax, %eax implies zeroing the upper 32-bits of RAX which makes it not a NOP. In 32-bit mode using NOP encoding is fine.
llvm-svn: 141353 | 
| | 
| 
| 
| 
| 
| | instructions. Mark instructions that have this behavior. Fixes PR10676.
llvm-svn: 141065 | 
| | 
| 
| 
| | llvm-svn: 140962 | 
| | 
| 
| 
| 
| 
| | 0xf2 as an opcode extension and allows the opsize prefix. This necessitated adding IC_XD_OPSIZE and IC_64BIT_XD_OPSIZE contexts. Unfortunately, this increases the size of the disassembler tables. Fixes PR10702.
llvm-svn: 140954 | 
| | 
| 
| 
| 
| 
| | This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951 | 
| | 
| 
| 
| 
| 
| | Fixes part of PR10700.
llvm-svn: 140370 | 
| | 
| 
| 
| 
| 
| | disassembling to ignore OpSize and REX.W.
llvm-svn: 139484 | 
| | 
| 
| 
| 
| 
| | from disassembling to their non-VEX form. Also prevents weak filter collisons that were keeping valid VEX instructions from decoding properly. Make VEX_L* not inherit from VEX_* because the VEX.L bit always important. This stops packed int VEX encodings from being disassembled when specified with VEX.L=1. Fixes PR10831 and PR10806.
llvm-svn: 138997 | 
| | 
| 
| 
| 
| 
| | table. Fixes disassembling of VEX instructions with 'pp'=00. Fixes subset of PR10678.
llvm-svn: 138552 | 
| | 
| 
| 
| | llvm-svn: 128826 | 
| | 
| 
| 
| | llvm-svn: 128823 | 
| | 
| 
| 
| | llvm-svn: 128818 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | instruction set.  This code adds support for the VEX prefix
and for the YMM registers accessible on AVX-enabled
architectures.  Instruction table support that enables AVX
instructions for the disassembler is in an upcoming patch.
llvm-svn: 127644 | 
| | 
| 
| 
| | llvm-svn: 117208 | 
| | 
| 
| 
| | llvm-svn: 117206 | 
| | 
| 
| 
| | llvm-svn: 117111 | 
| | 
| 
| 
| | llvm-svn: 101376 | 
| | 
| 
| 
| | llvm-svn: 91959 | 
| | 
| 
| 
| | llvm-svn: 91774 | 
| | 
| 
| 
| | llvm-svn: 91757 | 
|  | incarnations), integrated into the MC framework.  
The disassembler is table-driven, using a custom TableGen backend to 
generate hierarchical tables optimized for fast decode.  The disassembler 
consumes MemoryObjects and produces arrays of MCInsts, adhering to the 
abstract base class MCDisassembler (llvm/MC/MCDisassembler.h).
The disassembler is documented in detail in
- lib/Target/X86/Disassembler/X86Disassembler.cpp (disassembler runtime)
- utils/TableGen/DisassemblerEmitter.cpp (table emitter)
You can test the disassembler by running llvm-mc -disassemble for i386
or x86_64 targets.  Please let me know if you encounter any problems
with it.
llvm-svn: 91749 |