Jim Grosbach
ae2ac1f597
Tidy up. Formatting.
...
llvm-svn: 155032
2012-04-18 18:56:33 +00:00
Jim Grosbach
26c6c85855
Move a few more warnings to use PrintWarning().
...
llvm-svn: 155027
2012-04-18 18:39:31 +00:00
Jim Grosbach
f8c6a6ba04
Tidy up. No need for a Twine here, as it's just constants.
...
llvm-svn: 155026
2012-04-18 18:39:27 +00:00
Jim Grosbach
5e14805a0f
Formatting.
...
llvm-svn: 155025
2012-04-18 18:39:23 +00:00
Jim Grosbach
e846a32427
Tidy up. Add a '.' at the end of the sentence.
...
llvm-svn: 155024
2012-04-18 18:39:19 +00:00
Jim Grosbach
78b59b30e7
Clean up warning text. Remove extraneous prefix.
...
llvm-svn: 155015
2012-04-18 18:09:50 +00:00
Jim Grosbach
3c537f8fb4
TableGen use PrintWarning rather than fprintf(stderr,...) for warnings.
...
That way we get source line number information from the diagnostics.
llvm-svn: 155014
2012-04-18 17:46:41 +00:00
Silviu Baranga
8e0ebc8ed7
Fixed decoding for the ARM cdp2 instruction. The restriction on the coprocessor number was removed for this instruction.
...
llvm-svn: 155000
2012-04-18 13:02:55 +00:00
Jim Grosbach
d32ea4a8a9
Sanity check error handling for TokenAlias.
...
llvm-svn: 154951
2012-04-17 21:23:52 +00:00
Jim Grosbach
ced1f200a3
Tidy up. 80 columns.
...
llvm-svn: 154881
2012-04-17 00:01:04 +00:00
Craig Topper
da52eeedcb
Fix target specific intrinsic handling to adjust intrinsic number before doing attribute table lookup. Also fix attribute table lookup to handle 'invalid' intrinsic correctly. Fixes PR12542
...
llvm-svn: 154658
2012-04-13 06:14:57 +00:00
Jim Grosbach
8327980405
Remove incorrect comment.
...
llvm-svn: 154533
2012-04-11 21:09:54 +00:00
Jim Grosbach
80c9f4d837
Tidy up. Remove hard tab characters.
...
llvm-svn: 154532
2012-04-11 21:02:33 +00:00
Jim Grosbach
51aa44347a
Tidy up. Whitespace.
...
llvm-svn: 154531
2012-04-11 21:02:30 +00:00
Andrew Trick
6d7aff8241
TableGen's regpressure: emit per-registerclass weight limits.
...
llvm-svn: 154518
2012-04-11 18:16:28 +00:00
Andrew Trick
2628429e92
TableGen'd regpressure: register unit set pruning.
...
The pruning is more complete if it is not done incrementally. The code
is also a tad less convluted.
llvm-svn: 154510
2012-04-11 17:35:26 +00:00
Andrew Trick
a2a5c3bb71
Tablegen'd regpressure: emit the weighted pressure limit.
...
llvm-svn: 154477
2012-04-11 04:31:33 +00:00
Andrew Trick
ccfe0f1fc6
Table-generated register pressure fixes.
...
Handle mixing allocatable and unallocatable register gracefully.
Simplify the pruning of register unit sets.
llvm-svn: 154474
2012-04-11 03:19:15 +00:00
Andrew Trick
0c60300f39
TableGen/reginfo potential bug: typo from previous checkin.
...
llvm-svn: 154452
2012-04-10 23:53:32 +00:00
Andrew Trick
360c19ad86
Fix for register pressure tables.
...
Recent refactoring introduced a bug. Fix: added buildRegUnitSets.
llvm-svn: 154382
2012-04-10 03:36:49 +00:00
Andrew Trick
218abb3a9c
Use std::includes instead of my own implementation.
...
Jakob's review.
llvm-svn: 154377
2012-04-10 03:12:29 +00:00
Andrew Trick
6b7d15e240
Added register unit sets to the target description.
...
This is a new algorithm that finds sets of register units that can be
used to model registers pressure. This handles arbitrary, overlapping
register classes. Each register class is associated with a (small)
list of pressure sets. These are the dimensions of pressure affected
by the register class's liveness.
llvm-svn: 154374
2012-04-10 02:25:24 +00:00
Andrew Trick
f73fa6bef2
Added register unit weights to the target description.
...
This is a new algorithm that associates registers with weighted
register units to accuretely model their effect on register
pressure. This handles registers with multiple overlapping
subregisters. It is possible, but almost inconceivable that the
algorithm fails to find an exact solution for a target description. If
an exact solution cannot be found, an inexact, but reasonable solution
will be chosen.
llvm-svn: 154373
2012-04-10 02:25:21 +00:00
Andrew Trick
7b51eb5f5e
Fix header comment
...
llvm-svn: 154372
2012-04-10 02:25:18 +00:00
Craig Topper
2a4fe8b344
Convert assert(false) followed by a return to llvm_unreachable
...
llvm-svn: 153997
2012-04-04 04:55:46 +00:00
Craig Topper
b4929c0302
Tidy up spacing in some tablegen outputs.
...
llvm-svn: 153937
2012-04-03 06:52:47 +00:00
Craig Topper
ce6c05e0df
Add support for AVX enhanced comparison predicates. Patch from Kay Tiong Khoo.
...
llvm-svn: 153935
2012-04-03 05:20:24 +00:00
Andrew Trick
a1e25f74dd
Cleanup set_union usage. The same thing but a bit cleaner now.
...
llvm-svn: 153922
2012-04-03 01:35:52 +00:00
Andrew Trick
a92546a4bb
Use std::set_union instead of nasty custom code.
...
I just noticed Jakob's examples of the proper application of
std::set... routines.
llvm-svn: 153918
2012-04-03 00:47:23 +00:00
Silviu Baranga
af228a1538
Second part for the 153874 one
...
llvm-svn: 153875
2012-04-02 15:46:46 +00:00
Benjamin Kramer
d960cf6265
Emit the asm writer's mnemonic table with SequenceToOffsetTable.
...
This way we can get AVX v-prefixed instructions tail merged with the normal insns.
llvm-svn: 153869
2012-04-02 09:13:46 +00:00
Craig Topper
52dc5e74e5
Reorder fields in MatchEntry and OperandMatchEntry to reduce padding. A bit tricky due to the target specific sizes for some of the fields so the ordering is only optimal for the targets in the tree.
...
llvm-svn: 153865
2012-04-02 07:48:39 +00:00
Craig Topper
fe02cb5e8b
Remove getInstructionName from MCInstPrinter implementations in favor of using the instruction name table from MCInstrInfo. Reduces static data in the InstPrinter implementations.
...
llvm-svn: 153863
2012-04-02 07:01:04 +00:00
Craig Topper
949f3bef7a
Use SequenceToOffsetTable to generate instruction name table for AsmWriter.
...
llvm-svn: 153857
2012-04-02 00:47:39 +00:00
Craig Topper
56bc73a030
Use SequenceToOffsetTable to create instruction name table. Saves space particularly on X86 where AVX instructions just add a 'v' to the front of other instructions.
...
llvm-svn: 153841
2012-04-01 18:14:14 +00:00
Benjamin Kramer
84a17ab494
Emit the LLVM<->DWARF register mapping as a sorted table and use binary search to do the lookup.
...
This also avoids emitting the information twice, which led to code bloat. On i386-linux-Release+Asserts
with all targets built this change shaves a whopping 1.3 MB off clang. The number is probably exaggerated
by recent inliner changes but the methods were already enormous with the old inline cost computation.
The DWARF reg -> LLVM reg mapping doesn't seem to have holes in it, so it could be a simple lookup table.
I didn't implement that optimization yet to avoid potentially changing functionality.
There is still some duplication both in tablegen and the generated code that should be cleaned up eventually.
llvm-svn: 153837
2012-04-01 14:23:58 +00:00
Andrew Trick
e5028d95da
comment typo
...
llvm-svn: 153796
2012-03-31 02:39:17 +00:00
Andrew Trick
f1fa07f326
Introduce Register Units: Give each leaf register a number.
...
First small step toward modeling multi-register multi-pressure. In the
future, register units can also be used to model liveness and
aliasing.
llvm-svn: 153794
2012-03-31 01:35:59 +00:00
Benjamin Kramer
dbd6a33c45
Rip out emission of the regIsInRegClass function for the asm printer.
...
It's slow, bloated and completely redundant with MCRegisterClass::contains.
llvm-svn: 153782
2012-03-30 23:13:40 +00:00
Jakob Stoklund Olesen
a29c0a3bac
Use SequenceToOffsetTable in emitRegisterNameString.
...
This allows suffix sharing in register names. (AX is a suffix of EAX).
llvm-svn: 153777
2012-03-30 21:12:52 +00:00
Jakob Stoklund Olesen
0255173d11
Reapply 153764 and 153761 with a fix.
...
Use an explicit comparator instead of the default.
The sets are sorted, but not using the default comparator. Hopefully,
this will unbreak the Linux builders.
llvm-svn: 153772
2012-03-30 20:24:14 +00:00
Rafael Espindola
34915bd5fa
Revert 153764 and 153761. They broke a --enable-optimized --enable-assertions
...
--enable-expensive-checks build.
llvm-svn: 153771
2012-03-30 20:09:06 +00:00
Jakob Stoklund Olesen
25b63f35f8
Compress SimpleValueType lists by sharing.
...
Many register classes have the same value types. Share the table space.
llvm-svn: 153764
2012-03-30 17:42:04 +00:00
Jakob Stoklund Olesen
cf79a76c01
Compress register lists by sharing suffixes.
...
TableGen emits lists of sub-registers, super-registers, and overlaps. Put
them all in a single table and use a SequenceToOffsetTable to share
suffixes.
llvm-svn: 153761
2012-03-30 17:25:43 +00:00
Jakob Stoklund Olesen
dab150c9cd
Add a SequenceToOffsetTable to TableGen.
...
This is similar to the StringToOffsetTable we use to produce string
tables, but it can be used for other sequences than strings, and it
eliminates entries for suffixes.
llvm-svn: 153760
2012-03-30 17:25:40 +00:00
Jakob Stoklund Olesen
3da52049b4
Add more constness to CodeGenRegisters.
...
llvm-svn: 153667
2012-03-29 18:03:59 +00:00
Jakob Stoklund Olesen
7623979dd6
Spill DPair registers, not just QPR.
...
The arm_neon intrinsics can create virtual registers from the DPair
register class which allows both even-odd and odd-even D-register pairs.
This fixes PR12389.
llvm-svn: 153603
2012-03-28 21:20:32 +00:00
Chris Lattner
bf1b6e4fc5
fix a failure path to print the right thing, part of PR12357
...
llvm-svn: 153457
2012-03-26 19:11:51 +00:00
Benjamin Kramer
773a45650a
TableGen: Don't emit the llvm intrinsic -> gcc builtin table, its only user was the c backend.
...
llvm-svn: 153432
2012-03-26 11:08:03 +00:00
Benjamin Kramer
a41ae12bd5
Include cstdio in a few place that depended on getting it transitively through StringExtras.h
...
llvm-svn: 153328
2012-03-23 11:35:30 +00:00