| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
The TableGenBackend base class doesn't do much, and will be removed
completely soon.
Patch by Sean Silva!
llvm-svn: 158311
|
|
|
|
|
|
|
| |
StringMap iterators are not deterministic, and that's more important
here than speed or memory.
llvm-svn: 155039
|
|
|
|
| |
llvm-svn: 155037
|
|
|
|
| |
llvm-svn: 155034
|
|
|
|
| |
llvm-svn: 155032
|
|
|
|
| |
llvm-svn: 153997
|
|
|
|
| |
llvm-svn: 153937
|
|
|
|
|
|
| |
This way we can get AVX v-prefixed instructions tail merged with the normal insns.
llvm-svn: 153869
|
|
|
|
|
|
| |
using the instruction name table from MCInstrInfo. Reduces static data in the InstPrinter implementations.
llvm-svn: 153863
|
|
|
|
| |
llvm-svn: 153857
|
|
|
|
|
|
| |
It's slow, bloated and completely redundant with MCRegisterClass::contains.
llvm-svn: 153782
|
|
|
|
|
|
| |
This allows suffix sharing in register names. (AX is a suffix of EAX).
llvm-svn: 153777
|
|
|
|
|
|
|
|
| |
We cannot limit the concatenated instruction names to 64K. ARM is
already at 32K, and it is easy to imagine a target with more
instructions.
llvm-svn: 152817
|
|
|
|
|
|
|
|
|
|
|
| |
This patch limited the concatenated register names to 64K which meant
that the total number of registers was many times less than 64K.
If any compilers actually enforce the 64K limit on string literals, and
it turns out to be a problem, we should fix that problem by not using
long string literals.
llvm-svn: 152816
|
|
|
|
|
|
|
| |
Original commit message:
Use uint16_t to store InstrNameIndices in MCInstrInfo. Add asserts to protect all 16-bit string table offsets. Also make sure the string to offset table string is not larger than 65536 characters since larger string literals aren't portable.
llvm-svn: 152296
|
|
|
|
|
|
|
|
|
|
| |
Original commit message:
Use uint16_t to store InstrNameIndices in MCInstrInfo. Add asserts to protect
all 16-bit string table offsets. Also make sure the string to offset table
string is not larger than 65536 characters since larger string literals aren't
portable.
llvm-svn: 152233
|
|
|
|
|
|
| |
protect all 16-bit string table offsets. Also make sure the string to offset table string is not larger than 65536 characters since larger string literals aren't portable.
llvm-svn: 152202
|
|
|
|
|
|
| |
string literals so the index into the big string can never be larger than that.
llvm-svn: 152105
|
|
|
|
| |
llvm-svn: 149814
|
|
|
|
| |
llvm-svn: 147855
|
|
|
|
|
|
| |
rdar://10435076
llvm-svn: 144606
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951
|
|
|
|
|
|
|
| |
This makes it possible to allocate CodeGenRegisterClass instances
dynamically and reorder them.
llvm-svn: 140816
|
|
|
|
| |
llvm-svn: 134457
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
TableGen had diagnostic printers sprinkled about in a few places. Pull them
together into a single location in Error.cpp.
llvm-svn: 133568
|
|
|
|
|
|
|
| |
Reuse the CodeGenRegBank DenseMap in a few places that would build their
own or use linear search.
llvm-svn: 133333
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
are also greater than the alias.
llvm-svn: 133038
|
|
|
|
|
|
| |
operands in the aliasee, don't print the alias.
llvm-svn: 132963
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
true on success and false on failure. Update callers.
llvm-svn: 129722
|
|
|
|
|
|
| |
the alias".
llvm-svn: 129485
|
|
|
|
| |
llvm-svn: 129124
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 128020
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
* Move the code that emits the reg in reg class matching into its own function.
llvm-svn: 127988
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 121659
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 115096
|
|
|
|
| |
llvm-svn: 114293
|
|
|
|
| |
llvm-svn: 108571
|
|
|
|
|
|
| |
member of AsmPrinter. Instead, pass it in explicitly.
llvm-svn: 100306
|
|
|
|
|
|
| |
Use CodeGenTarget::getInstNamespace in one place and fix it.
llvm-svn: 98915
|
|
|
|
| |
llvm-svn: 98914
|