Craig Topper
86f61a903c
Use uint16_t to store indices into string table since C++ only allows 64K string literals so the index into the big string can never be larger than that.
...
llvm-svn: 152105
2012-03-06 06:04:39 +00:00
Craig Topper
dfa8617ab9
Convert assert(0) to llvm_unreachable
...
llvm-svn: 149814
2012-02-05 07:21:30 +00:00
David Blaikie
8d47bb30e3
Remove unnecessary default cases in switches that cover all enum values.
...
llvm-svn: 147855
2012-01-10 16:47:17 +00:00
Jim Grosbach
2ac98a24aa
ARM parsing datatype suffix variants for fixed-writeback VLD1/VST1 instructions.
...
rdar://10435076
llvm-svn: 144606
2011-11-15 01:46:57 +00:00
Jakob Stoklund Olesen
c36b745e2e
TableGen: Privatize CodeGenRegisterClass::TheDef and Name.
...
When TableGen starts creating its own register classes, the synthesized
classes won't have a Record reference. All register classes must have a
name, though.
llvm-svn: 141081
2011-10-04 15:28:08 +00:00
Peter Collingbourne
01246536d9
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
Jakob Stoklund Olesen
d7b6708541
Switch to ArrayRef<CodeGenRegisterClass*>.
...
This makes it possible to allocate CodeGenRegisterClass instances
dynamically and reorder them.
llvm-svn: 140816
2011-09-29 22:28:37 +00:00
Evan Cheng
1112260be0
Remove the AsmWriterEmitter (unused) feature that rely on TargetSubtargetInfo.
...
llvm-svn: 134457
2011-07-06 02:02:33 +00:00
Francois Pichet
f9f38d8d73
Change AsmName's type from StringRef to std::string. AsmName was pointing to a temporary string object that was destroyed. This is undefined behavior and MSVC didn't like it.
...
This fixes over 300+ failing tests on MSVC.
Credit for this fix goes to chapuni.
llvm-svn: 134064
2011-06-29 11:25:34 +00:00
Owen Anderson
c1dcf312d1
Add support for alternative register names, useful for instructions whose 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
2011-06-27 21:06:21 +00:00
Jim Grosbach
cfcba2d22b
Consolidate some TableGen diagnostic helper functions.
...
TableGen had diagnostic printers sprinkled about in a few places. Pull them
together into a single location in Error.cpp.
llvm-svn: 133568
2011-06-21 22:55:50 +00:00
Jakob Stoklund Olesen
f190283688
Store CodeGenRegisters as pointers so they won't be reallocated.
...
Reuse the CodeGenRegBank DenseMap in a few places that would build their
own or use linear search.
llvm-svn: 133333
2011-06-18 04:26:06 +00:00
Jakob Stoklund Olesen
4d17793443
Give CodeGenRegisterClass a real sorted member set.
...
Make the Elements vector private and expose an ArrayRef through
getOrder() instead. getOrder will eventually provide multiple
user-specified allocation orders.
Use the sorted member set for member and subclass tests. Clean up a lot
of ad hoc searches.
llvm-svn: 133040
2011-06-15 04:50:36 +00:00
Bill Wendling
5ae6b0c972
Improve the heuristic to emit the alias if the number of hard-coded registers
...
are also greater than the alias.
llvm-svn: 133038
2011-06-15 04:31:19 +00:00
Bill Wendling
77d4d62693
Heuristic: If the number of operands in the alias are more than the number of
...
operands in the aliasee, don't print the alias.
llvm-svn: 132963
2011-06-14 03:17:20 +00:00
Bill Wendling
6f30676150
Use a more efficient data structure for the "operand map". The number of
...
operands to an instruction aren't great, so an iterative search is fairly quick
and doesn't have the overhead of std::map.
llvm-svn: 131886
2011-05-23 00:18:33 +00:00
Eric Christopher
bd8bbe5934
Invert the meaning of printAliasInstr's return value. It now returns
...
true on success and false on failure. Update callers.
llvm-svn: 129722
2011-04-18 21:28:11 +00:00
Bill Wendling
500b41a7a5
Add an option to not print the alias of an instruction. It defaults to "print
...
the alias".
llvm-svn: 129485
2011-04-13 23:36:21 +00:00
Bill Wendling
fafa0c2509
Only emit the AvailableFeatures variable if it's used.
...
llvm-svn: 129124
2011-04-08 04:08:57 +00:00
Bill Wendling
342ba5c4b6
Replace the old algorithm that emitted the "print the alias for an instruction"
...
with the newer, cleaner model. It uses the IAPrinter class to hold the
information that is needed to match an instruction with its alias. This also
takes into account the available features of the platform.
There is one bit of ugliness. The way the logic determines if a pattern is
unique is O(N**2), which is gross. But in reality, the number of items it's
checking against isn't large. So while it's N**2, it shouldn't be a massive time
sink.
llvm-svn: 129110
2011-04-07 21:20:06 +00:00
Bill Wendling
52c4596a0f
Call static functions so that they aren't left unused.
...
llvm-svn: 128020
2011-03-21 21:08:27 +00:00
Bill Wendling
9adf1c9edd
A WIP commit of the InstAlias printing cleanup. This code will soon replace the
...
code below it. Even though it looks very similar, it will match more precisely
and geneate better functions in the long run.
llvm-svn: 127991
2011-03-21 08:59:17 +00:00
Bill Wendling
4cdb29548b
Add the IAPrinter class.
...
This is a helper class that will make it easier to say which InstAliases can be
printed and which cannot (because of ambiguity).
llvm-svn: 127990
2011-03-21 08:40:31 +00:00
Bill Wendling
e3b0820ad4
* Add classes that support the "feature" information.
...
* Move the code that emits the reg in reg class matching into its own function.
llvm-svn: 127988
2011-03-21 08:31:53 +00:00
Bill Wendling
91cce6cc1d
A new TableGen feature! (Not turned on just yet.)
...
InstAlias<{alias}, {aliasee}>;
The InstAlias instruction should be able to go from the MCInst to the
{alias}. All of the information is there to match the MCInst with the
{aliasee}. From there, it's a simple matter to emit the {alias}, with the
correct operands from the {aliasee}.
The code this patch generates can be used by the InstPrinter to automatically
print out the alias without having to write special C++ code to handle the
situation.
This is a WIP, and therefore are several limitations. For instance, it cannot
handle AsmOperands at the moment. It also doesn't know what to do when two
{alias}es match the same {aliasee}. (Currently, it just ignores those two cases
and allows the printInstruction method to handle them.)
llvm-svn: 126538
2011-02-26 03:09:12 +00:00
Chris Lattner
8e4bbafeb3
eliminate the Records global variable, patch by Garrison Venn!
...
llvm-svn: 121659
2010-12-13 00:23:57 +00:00
Jim Grosbach
046ae5dbac
Let a target specify whether it wants an assembly printer to be the MC version
...
or not. TableGen needs to generate the printInstruction() function as taking
an MCInstr* or a MachineInstr*, depending. Default to the old non-MC
version so that everything not yet using MC continues to just work without
fidding.
llvm-svn: 115126
2010-09-30 01:29:54 +00:00
Jim Grosbach
7e54b358bd
trailing whitespace
...
llvm-svn: 115096
2010-09-29 22:32:50 +00:00
Eric Christopher
8b626a2da9
Handle the odd case where we only have one instruction.
...
llvm-svn: 114293
2010-09-18 18:50:27 +00:00
Bill Wendling
16742654a6
Update comment.
...
llvm-svn: 108571
2010-07-16 23:10:00 +00:00
Chris Lattner
cdbca3e8fe
change a ton of code to not implicitly use the "O" raw_ostream
...
member of AsmPrinter. Instead, pass it in explicitly.
llvm-svn: 100306
2010-04-04 04:47:45 +00:00
Chris Lattner
3f22bdc032
make inst_begin/inst_end iterate over InstructionsByEnumValue.
...
Use CodeGenTarget::getInstNamespace in one place and fix it.
llvm-svn: 98915
2010-03-19 01:00:55 +00:00
Chris Lattner
42d67226c5
revert 98912
...
llvm-svn: 98914
2010-03-19 00:50:47 +00:00
Chris Lattner
f0beb5287b
make inst_begin/inst_end iterate over InstructionsByEnumValue.
...
llvm-svn: 98912
2010-03-19 00:40:22 +00:00
Chris Lattner
b929ca1352
change Target.getInstructionsByEnumValue to return a reference
...
to a vector that CGT stores instead of synthesizing it on every
call.
llvm-svn: 98910
2010-03-19 00:34:35 +00:00
Chris Lattner
fcce3c5ee4
enhance llvm-mc -show-inst to print the enum of an instruction, like so:
...
testb %al, %al ## <MCInst #2412 TEST8rr
## <MCOperand Reg:2>
## <MCOperand Reg:2>>
jne LBB1_7 ## <MCInst #938 JNE_1
## <MCOperand Expr:(LBB1_7)>>
llvm-svn: 95935
2010-02-11 22:57:32 +00:00
Sean Callanan
c1249e600e
Fixed some indentation in the AsmWriterInst
...
implementation. Also changed the constructor
so that it does not require a Record, making it
usable by the EDEmitter.
llvm-svn: 95715
2010-02-09 23:06:35 +00:00
Sean Callanan
1248c51819
Per PR 6219, factored AsmWriterInst and AsmWriterOperand
...
out of the AsmWriterEmitter. This patch does the physical
code movement, but leaves the implementation unchanged. I'll
make any changes necessary to generalize the code in a
separate patch.
llvm-svn: 95697
2010-02-09 21:50:41 +00:00
Chris Lattner
cd07a3a0b7
sink handling of target-independent machine instrs (other
...
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp
file. This allows elimination of the
NO_ASM_WRITER_BOILERPLATE hack among other things.
llvm-svn: 95177
2010-02-03 01:00:52 +00:00
Dan Gohman
35331c1dcd
Don't print a redundant tab for inline asm, and do use the new printKill.
...
llvm-svn: 86206
2009-11-06 00:19:43 +00:00
Daniel Dunbar
b67b5bb0b1
Move UnescapeString to a static function for its sole client; its inefficient and broken.
...
llvm-svn: 84358
2009-10-17 20:43:42 +00:00
Jakob Stoklund Olesen
31fcbdefbb
Introduce the TargetInstrInfo::KILL machine instruction and get rid of the
...
unused DECLARE instruction.
KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF
in the places where IMPLICIT_DEF is just used to alter liveness of physical
registers.
llvm-svn: 83006
2009-09-28 20:32:26 +00:00
Chris Lattner
d600c9342b
add a comment.
...
llvm-svn: 82236
2009-09-18 18:10:19 +00:00
Chris Lattner
c87179b542
slightly increase prettiness.
...
llvm-svn: 81742
2009-09-14 01:27:50 +00:00
Chris Lattner
c4a64a08ec
emit the register table as a massive string to avoid relocations.
...
llvm-svn: 81741
2009-09-14 01:26:18 +00:00
Chris Lattner
d823d97b3a
move StringToOffsetTable out to its own header.
...
llvm-svn: 81740
2009-09-14 01:19:16 +00:00
Chris Lattner
68ed8d21f8
factor string table generation out to its own class. This changes
...
the encoding of the AsmStrs table saving a byte or two.
llvm-svn: 81739
2009-09-14 01:16:36 +00:00
Chris Lattner
20b7392123
the tblgen produced 'getRegisterName' method does not access
...
the object, make it static instead of const.
llvm-svn: 81711
2009-09-13 20:19:22 +00:00
Chris Lattner
0cde5283e3
make tblgen produce a function that returns the name for a physreg.
...
Nothing is using this info yet.
llvm-svn: 81707
2009-09-13 20:08:00 +00:00
Chris Lattner
b5243d77cb
PHI nodes can never reach the asmprinter, assert and die instead of printing
...
out an illegal "PHINODE" instruction.
llvm-svn: 81495
2009-09-11 00:41:15 +00:00