| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 161940
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.
As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:
Time to compile at -O2 (averaged w/ hot caches):
Previous: 35.5s
New: 8.9s
TEXT size:
Previous: 447,251
New: 297,661
Builds in 25% of the time previously required and generates code 66% of
the size.
Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.
llvm-svn: 161888
|
|
|
|
|
|
|
|
|
| |
The TableGenBackend base class doesn't do much, and will be removed
completely soon.
Patch by Sean Silva!
llvm-svn: 158311
|
|
|
|
| |
llvm-svn: 153875
|
|
|
|
| |
llvm-svn: 152906
|
|
|
|
|
|
| |
reference instead of value to avoid some copying.
llvm-svn: 152899
|
|
|
|
|
|
| |
the opening parenthese instead of 2 spaces in.
llvm-svn: 152889
|
|
|
|
|
|
| |
same result could be found with VariableInstructions.size(). Also fix some typos in comments.
llvm-svn: 152885
|
|
|
|
|
|
| |
declaration from class to run method since its only used there and was being reinitialized anyway.
llvm-svn: 152616
|
|
|
|
| |
llvm-svn: 151764
|
|
|
|
|
|
| |
UNPREDICTABLE on ARM. Wire this to tBLX in order to provide test coverage.
llvm-svn: 150169
|
|
|
|
| |
llvm-svn: 149814
|
|
|
|
|
|
| |
feature-dependent instructions.
llvm-svn: 142193
|
|
|
|
|
|
| |
This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951
|
|
|
|
| |
llvm-svn: 140928
|
|
|
|
|
|
| |
Noticed by inspection.
llvm-svn: 139317
|
|
|
|
| |
llvm-svn: 139286
|
|
|
|
|
|
| |
Speculatively try to fix our windows testers with a patch I found on the internet.
llvm-svn: 139279
|
|
|
|
| |
llvm-svn: 139278
|
|
|
|
|
|
| |
predicate checking to the Disassembler.
llvm-svn: 139250
|
|
|
|
|
|
|
|
| |
instruction that is disassemblable, but invalid. Only used for ARM UNPREDICTABLE instructions at the moment.
Patch by James Molloy.
llvm-svn: 137830
|
|
|
|
|
|
| |
checking the success result of custom decoder hooks on singleton decodings.
llvm-svn: 137171
|
|
|
|
|
|
| |
encodings like "let Inst{11-7} = foo;", where the RHS has no bitwidth specifiers.
llvm-svn: 136660
|
|
|
|
|
|
| |
decoder hooks in addition to per-operand decoder hooks.
llvm-svn: 136645
|
|
|
|
|
|
| |
failures.
llvm-svn: 136635
|
|
|
|
|
|
| |
contiguous, but out of order.
llvm-svn: 136534
|
|
|
|
|
|
| |
Remove const qualifiers from Init references, per Chris' request.
llvm-svn: 136531
|
|
|
|
|
|
|
| |
Make references to Inits const everywhere. This is the final step
before making them unique.
llvm-svn: 136485
|
|
|
|
| |
llvm-svn: 136478
|
|
|
|
|
|
| |
overwrite our mapping.
llvm-svn: 136467
|
|
|
|
| |
llvm-svn: 136431
|
|
|
|
| |
llvm-svn: 136405
|
|
|
|
|
|
| |
decoders for ARM.
llvm-svn: 135524
|
|
|
|
|
|
| |
in multiple buildbots.
llvm-svn: 134936
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Manage Inits in a FoldingSet. This provides several benefits:
- Memory for Inits is properly managed
- Duplicate Inits are folded into Flyweights, saving memory
- It enforces const-correctness, protecting against certain classes
of bugs
The above benefits allow Inits to be used in more contexts, which in
turn provides more dynamism to TableGen. This enhanced capability
will be used by the AVX code generator to a fold common patterns
together.
llvm-svn: 134907
|
|
|
|
|
|
|
|
|
|
| |
For now this is distinct from isCodeGenOnly, as code-gen-only
instructions can (and often do) still have encoding information
associated with them. Once we've migrated all of them over to true
pseudo-instructions that are lowered to real instructions prior to
the printer/emitter, we can remove isCodeGenOnly and just use isPseudo.
llvm-svn: 134539
|
|
|
|
|
|
|
|
| |
operands are logically equivalent to existing registers, but happen to be printed specially. For example, an instruciton that prints d0[0] instead of s0.
Patch by Jim Grosbach.
llvm-svn: 133940
|
|
|
|
|
|
| |
symbolic disassembly.
llvm-svn: 129708
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
|
|
|
| |
llvm-svn: 127619
|
|
fixed-length instruction encodings.
A major part of its (eventual) goal is to support a much cleaner separation between disassembly callbacks
provided by the target and the disassembler emitter itself, i.e. not requiring hardcoding of knowledge in tblgen
like the existing disassembly emitters do.
The hope is that some day this will allow us to replace the existing non-Thumb ARM disassembler and remove
some of the hacks the old one introduced to tblgen.
llvm-svn: 125966
|