Craig Topper
ebc3aa250b
Fix up indentation of outputted decode function for readability.
...
llvm-svn: 162082
2012-08-17 05:16:15 +00:00
Benjamin Kramer
26b568d9d5
Fix a const violation in the generated disassembler.
...
llvm-svn: 161940
2012-08-15 10:26:44 +00:00
Jim Grosbach
ecaef49f59
Switch the fixed-length disassembler to be table-driven.
...
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
2012-08-14 19:06:05 +00:00
Jakob Stoklund Olesen
e6aed139f0
Write llvm-tblgen backends as functions instead of sub-classes.
...
The TableGenBackend base class doesn't do much, and will be removed
completely soon.
Patch by Sean Silva!
llvm-svn: 158311
2012-06-11 15:37:55 +00:00
Silviu Baranga
98144e9e1a
Second part for the 153874 one
...
llvm-svn: 153875
2012-04-02 15:46:46 +00:00
Craig Topper
501d95c176
More const-correcting of FixedLenDecoderEmitter.
...
llvm-svn: 152906
2012-03-16 06:52:56 +00:00
Craig Topper
48c112babe
Const-correct the FixedLenDecoderEmitter. Pass a few things by const reference instead of value to avoid some copying.
...
llvm-svn: 152899
2012-03-16 05:58:09 +00:00
Craig Topper
82d0d5fc6b
Spacing fixes. Mostly aligning arguments that spilled onto next line with the opening parenthese instead of 2 spaces in.
...
llvm-svn: 152889
2012-03-16 01:19:24 +00:00
Craig Topper
93e6434ca9
Remove unused field NumVariable from Filter class. Even it was needed the same result could be found with VariableInstructions.size(). Also fix some typos in comments.
...
llvm-svn: 152885
2012-03-16 00:56:01 +00:00
Craig Topper
ba6d810752
Remove unused field from FixedLenDecoderEmitter. Move NumberedInstructions declaration from class to run method since its only used there and was being reinitialized anyway.
...
llvm-svn: 152616
2012-03-13 06:39:00 +00:00
Jim Grosbach
3f4b23933f
Tidy up. 80 columns.
...
llvm-svn: 151764
2012-02-29 22:07:56 +00:00
James Molloy
d9ba4fd48f
Teach the MC and disassembler about SoftFail, and hook it up to UNPREDICTABLE on ARM. Wire this to tBLX in order to provide test coverage.
...
llvm-svn: 150169
2012-02-09 10:56:31 +00:00
Craig Topper
c4965bce14
Convert assert(0) to llvm_unreachable
...
llvm-svn: 149814
2012-02-05 07:21:30 +00:00
Owen Anderson
b7d9ee707d
Fix unused variable warning in the rare circumstance that we have no feature-dependent instructions.
...
llvm-svn: 142193
2011-10-17 16:56:47 +00:00
Peter Collingbourne
84c287e33c
Move TableGen's parser and entry point into a library
...
This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951
2011-10-01 16:41:13 +00:00
Bob Wilson
ce29158bc4
Subtarget getFeatureBits() returns a uint64_t, not unsigned.
...
llvm-svn: 140928
2011-10-01 02:47:54 +00:00
Eli Friedman
e776b580c1
Make sure to handle the case where emitPredicateMatch returns false. Noticed by inspection.
...
llvm-svn: 139317
2011-09-08 21:00:31 +00:00
James Molloy
21d293a37f
Fix warning on windows; use of comparison with bool argument.
...
llvm-svn: 139286
2011-09-08 08:12:01 +00:00
Andrew Trick
43674ad44d
Fix a use of freed string contents.
...
Speculatively try to fix our windows testers with a patch I found on the internet.
llvm-svn: 139279
2011-09-08 05:25:49 +00:00
Andrew Trick
61abca6daa
whitespace
...
llvm-svn: 139278
2011-09-08 05:23:14 +00:00
James Molloy
8067df9503
Second of a three-patch series aiming to fix MSR/MRS on Cortex-M. This adds predicate checking to the Disassembler.
...
llvm-svn: 139250
2011-09-07 19:42:28 +00:00
Owen Anderson
a4043c4b32
Allow the MCDisassembler to return a "soft fail" status code, indicating an instruction that is disassemblable, but invalid. Only used for ARM UNPREDICTABLE instructions at the moment.
...
Patch by James Molloy.
llvm-svn: 137830
2011-08-17 17:44:15 +00:00
Owen Anderson
ecc4ffc941
Fix an oversight in the FixedLenDecoderEmitter where we weren't correctly checking the success result of custom decoder hooks on singleton decodings.
...
llvm-svn: 137171
2011-08-09 23:05:23 +00:00
Owen Anderson
3022d6711d
Make the FixedLengthDecoderEmitter smart enough to autogenerate decoders for encodings like "let Inst{11-7} = foo;", where the RHS has no bitwidth specifiers.
...
llvm-svn: 136660
2011-08-01 22:45:43 +00:00
Owen Anderson
faee2cf9ff
The FixedLenDecoder needs to gracefully handle failing per-instruction decoder hooks in addition to per-operand decoder hooks.
...
llvm-svn: 136645
2011-08-01 20:06:49 +00:00