Eric Christopher
60e5b16f41
Rename DwarfUnits to DwarfFile to help avoid some naming confusion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196519 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 18:06:10 +00:00
Andrew Trick
6606ef0e98
MI-Sched: Model "reserved" processor resources.
...
This allows a target to use MI-Sched as an in-order scheduler that
will model strict resource conflicts without defining a processor
itinerary. Instead, the target can now use the new per-operand machine
model and define in-order resources with BufferSize=0. For example,
this would allow restricting the type of operations that can be formed
into a dispatch group. (Normally NumMicroOps is sufficient to enforce
dispatch groups).
If the intent is to model latency in in-order pipeline, as opposed to
resource conflicts, then a resource with BufferSize=1 should be
defined instead.
This feature is only casually tested as there are no in-tree targets
using it yet. However, Hal will be experimenting with POWER7.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196517 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 17:56:02 +00:00
Andrew Trick
573931394f
MI-Sched: handle latency of in-order operations with the new machine model.
...
The per-operand machine model allows the target to define "unbuffered"
processor resources. This change is a quick, cheap way to model stalls
caused by the latency of operations that use such resources. This only
applies when the processor's micro-op buffer size is non-zero
(Out-of-Order). We can't precisely model in-order stalls during
out-of-order execution, but this is an easy and effective
heuristic. It benefits cortex-a9 scheduling when using the new
machine model, which is not yet on by default.
MI-Sched for armv7 was evaluated on Swift (and only not enabled because
of a performance bug related to predication). However, we never
evaluated Cortex-A9 performance on MI-Sched in its current form. This
change adds MI-Sched functionality to reach performance goals on
A9. The only remaining change is to allow MI-Sched to run as a PostRA
pass.
I evaluated performance using a set of options to estimate the performance impact once MI sched is default on armv7:
-mcpu=cortex-a9 -disable-post-ra -misched-bench -scheditins=false
For a simple saxpy loop I see a 1.7x speedup. Here are the llvm-testsuite results:
(min run time over 2 runs, filtering tiny changes)
Speedups:
| Benchmarks/BenchmarkGame/recursive | 52.39% |
| Benchmarks/VersaBench/beamformer | 20.80% |
| Benchmarks/Misc/pi | 19.97% |
| Benchmarks/Misc/mandel-2 | 19.95% |
| SPEC/CFP2000/188.ammp | 18.72% |
| Benchmarks/McCat/08-main/main | 18.58% |
| Benchmarks/Misc-C++/Large/sphereflake | 18.46% |
| Benchmarks/Olden/power | 17.11% |
| Benchmarks/Misc-C++/mandel-text | 16.47% |
| Benchmarks/Misc/oourafft | 15.94% |
| Benchmarks/Misc/flops-7 | 14.99% |
| Benchmarks/FreeBench/distray | 14.26% |
| SPEC/CFP2006/470.lbm | 14.00% |
| mediabench/mpeg2/mpeg2dec/mpeg2decode | 12.28% |
| Benchmarks/SmallPT/smallpt | 10.36% |
| Benchmarks/Misc-C++/Large/ray | 8.97% |
| Benchmarks/Misc/fp-convert | 8.75% |
| Benchmarks/Olden/perimeter | 7.10% |
| Benchmarks/Bullet/bullet | 7.03% |
| Benchmarks/Misc/mandel | 6.75% |
| Benchmarks/Olden/voronoi | 6.26% |
| Benchmarks/Misc/flops-8 | 5.77% |
| Benchmarks/Misc/matmul_f64_4x4 | 5.19% |
| Benchmarks/MiBench/security-rijndael | 5.15% |
| Benchmarks/Misc/flops-6 | 5.10% |
| Benchmarks/Olden/tsp | 4.46% |
| Benchmarks/MiBench/consumer-lame | 4.28% |
| Benchmarks/Misc/flops-5 | 4.27% |
| Benchmarks/mafft/pairlocalalign | 4.19% |
| Benchmarks/Misc/himenobmtxpa | 4.07% |
| Benchmarks/Misc/lowercase | 4.06% |
| SPEC/CFP2006/433.milc | 3.99% |
| Benchmarks/tramp3d-v4 | 3.79% |
| Benchmarks/FreeBench/pifft | 3.66% |
| Benchmarks/Ptrdist/ks | 3.21% |
| Benchmarks/Adobe-C++/loop_unroll | 3.12% |
| SPEC/CINT2000/175.vpr | 3.12% |
| Benchmarks/nbench | 2.98% |
| SPEC/CFP2000/183.equake | 2.91% |
| Benchmarks/Misc/perlin | 2.85% |
| Benchmarks/Misc/flops-1 | 2.82% |
| Benchmarks/Misc-C++-EH/spirit | 2.80% |
| Benchmarks/Misc/flops-2 | 2.77% |
| Benchmarks/NPB-serial/is | 2.42% |
| Benchmarks/ASC_Sequoia/CrystalMk | 2.33% |
| Benchmarks/BenchmarkGame/n-body | 2.28% |
| Benchmarks/SciMark2-C/scimark2 | 2.27% |
| Benchmarks/Olden/bh | 2.03% |
| skidmarks10/skidmarks | 1.81% |
| Benchmarks/Misc/flops | 1.72% |
Slowdowns:
| Benchmarks/llubenchmark/llu | -14.14% |
| Benchmarks/Polybench/stencils/seidel-2d | -5.67% |
| Benchmarks/Adobe-C++/functionobjects | -5.25% |
| Benchmarks/Misc-C++/oopack_v1p8 | -5.00% |
| Benchmarks/Shootout/hash | -2.35% |
| Benchmarks/Prolangs-C++/ocean | -2.01% |
| Benchmarks/Polybench/medley/floyd-warshall | -1.98% |
| Polybench/linear-algebra/kernels/3mm | -1.95% |
| Benchmarks/McCat/09-vor/vor | -1.68% |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196516 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 17:55:58 +00:00
Andrew Trick
0591e2a415
comment typo and reformat
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196513 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 17:55:47 +00:00
David Blaikie
0d668218e7
DwarfDebug/DwarfUnit: Push abbreviation structures down into DwarfUnits to reduce duplication
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196479 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 07:43:55 +00:00
Alp Toker
087ab613f4
Correct word hyphenations
...
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities and contractions in nearby lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196471 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 05:44:44 +00:00
Rafael Espindola
ba2a226fab
Try harder to get a consistent floating point results.
...
This just extends the existing hack. It should be enough to get a reproducible bootstrap
on 32 bits.
I will open a bug to track getting a real fix for this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196462 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 04:14:33 +00:00
David Blaikie
7afb463a65
DwarfDebug: Avoid unnecessary abbreviation lookup when emitting DIEs
...
DIEs already contain references directly to their DIEAbbrev, use that
instead of looking it up based on index.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196446 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 01:01:41 +00:00
David Blaikie
acf6571d80
DwarfDebug: Remove trivial function wrapper
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196445 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 01:01:37 +00:00
Eric Christopher
9e568665ac
80-column.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196442 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 00:36:21 +00:00
Eric Christopher
7eca7002f2
Remove special handling for DW_AT_ranges support by constructing the
...
values with the correct behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196441 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 00:36:17 +00:00
Eric Christopher
e4b236cf59
Fix comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196437 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05 00:13:15 +00:00
David Blaikie
81a14a80f3
DwarfUnit: Correct comment by generalizing over all units, not just compilation units.
...
Code review feedback on r196394 by Paul Robinson.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196433 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 23:39:02 +00:00
Eric Christopher
3f8689f8af
Update comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196431 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 23:24:38 +00:00
Eric Christopher
e28204ea0a
Update comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196430 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 23:24:28 +00:00
Eric Christopher
881c0bb5a3
Remove incorrect comment and pointless cast.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196427 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 23:05:21 +00:00
Eric Christopher
dda6f1fb00
const on its own line is confusing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196426 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 22:54:45 +00:00
Eric Christopher
6b2011a4a3
Simplify check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196422 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 22:29:02 +00:00
Eric Christopher
690a455b0a
Reformat slightly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196421 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 22:26:43 +00:00
Eric Christopher
856d2fc052
Make RangeSpanList take a symbol for the beginning of the range
...
rather than magically making the names match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196419 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 22:04:50 +00:00
David Blaikie
ec112cfc45
DwarfDebug: Unconditionalize trivial asm comments
...
While we still have a few (~4) non-trivial comments with string
concatenation, etc that should remain conditionalized, these trivial
literal comments can be simplified.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196416 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 21:51:05 +00:00
David Blaikie
a18dcd4cce
DwarfDebug: Reduce code duplication for sec offset emission
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196414 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 21:31:26 +00:00
Eric Christopher
ae49c38733
Couple of small logical cleanups to use !empty rather than other
...
checks. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196412 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 21:20:15 +00:00
Eric Christopher
fb934a2183
Use move and stack allocation for RangeSpanLists. As a result make
...
a few things more const as well because we're now using const
references to refer to iterators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196398 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 19:06:58 +00:00
David Blaikie
193140b085
DebugInfo: Remove unused start/end labels for the debug_abbrevs section
...
Since we always emit only one abbrevation section (shared by all the
compilation units in this module) there's no need for a separate label
at the start of each one (and we weren't using the CU ID anyway, so
there really was only one label). Use the section label instead and drop
the wholely unused debug_abbrev_end label.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196394 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 18:12:28 +00:00
David Blaikie
3ddd790df1
DebugInfo: Avoid recreating matching labels in disparate places.
...
Instead, reuse the same MCSymbol - this should make the code easier to
follow by avoiding hard to trace dependencies between different bits of
code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196392 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-04 17:55:41 +00:00
Eric Christopher
d38749bec5
Update comment grammar and contents.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196323 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 22:05:55 +00:00
Michael Gottesman
3916f6c45a
Fixed various whitespace/spelling/80+ issues.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196310 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 20:21:17 +00:00
Timur Iskhodzhanov
aceff4a16e
Fix a typo in a comment
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196304 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 18:57:43 +00:00
Timur Iskhodzhanov
ac07cd54ed
Reland 196270 "Generalize debug info / EH emission in AsmPrinter"
...
Addressing the existense AMDGPUAsmPrinter and other subclasses of AsmPrinter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196288 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 15:10:23 +00:00
NAKAMURA Takumi
b5dd6691ca
Revert r196270, "Generalize debug info / EH emission in AsmPrinter"
...
It broke CodeGen/R600 tests with +Asserts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196272 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 13:15:54 +00:00
Timur Iskhodzhanov
c6a2cbbacb
Generalize debug info / EH emission in AsmPrinter
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196270 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 12:05:18 +00:00
Michael Gottesman
eae8ef479d
Added MachineBlockFrequencyInfo::view for displaying the block frequency propagation graph via graphviz.
...
This is useful for debugging issues in the BlockFrequency implementation
since one can easily visualize where probability mass and other errors
occur in the propagation.
This is the MI version of r194654.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196183 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 00:49:33 +00:00
Eric Christopher
5b93ae5ab5
Refactor the handling of lexical block and inline scope ranges
...
into a single function. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196181 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 00:45:59 +00:00
Eric Christopher
5c21e864d9
Update doxygen tags.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196180 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 00:45:56 +00:00
Eric Christopher
16df1b227c
Reorder member function declarations to match source order.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196179 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 00:45:54 +00:00
Eric Christopher
c2efbdbb60
Make ranges and range lists be a discrete entity that can be located
...
and emitted per function and CU. Begins coalescing ranges as a first
class entity through debug info. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196178 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-03 00:45:45 +00:00
Rafael Espindola
29a0d2abfe
Convert two char* that are only ever used as booleans to bool.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196168 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 23:04:51 +00:00
David Blaikie
c726add0ab
Remove unnecessary/commented-out header inclusion.
...
Review feedback from Eric Christopher on r196140
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196160 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 22:11:08 +00:00
David Blaikie
451fa97c8c
DebugInfo: Rename generic unit references to "TheU" instead of TheCU now that they might be type units instead of compile units.
...
CR feedback from Eric Christopher on r196139.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196159 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 22:09:48 +00:00
David Blaikie
f4a635ba48
DebugInfo: Rename DwarfCompileUnit.* to DwarfUnit.* to match their contents.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196140 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 19:33:15 +00:00
David Blaikie
7487eb6df3
DebugInfo: Refactor CompileUnit into a Unit baseclass and CompileUnit/TypeUnit derived classes.
...
Header/cpp file rename to follow immediately - just splitting out the
commits for ease of review/reading to demonstrate that the renaming
changes are entirely mechanical.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196139 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 19:33:10 +00:00
David Blaikie
fab3e599b0
DebugInfo: Type Units: Propagate the correct DW_AT_language into type units.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196130 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 18:44:29 +00:00
Rafael Espindola
cce5873de3
Move getSymbolWithGlobalValueBase to TargetLoweringObjectFile.
...
This allows it to be used in TargetLoweringObjectFileImpl.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196117 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-02 16:25:47 +00:00
Andrew Trick
4dc7377b20
Reverse the order of eviction checks for possible compile time savings. No functionality.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195969 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-29 23:49:38 +00:00
Lang Hames
d7d0669b4b
Teach LocalStackSlotAllocation that stackmaps/patchpoints don't have range
...
constraints on their frame offsets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195950 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-29 06:35:30 +00:00
Lang Hames
3d9cfe7e99
Remove unused variable from r195944.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195945 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-29 03:36:53 +00:00
Lang Hames
1cbca515b6
Refactor a lot of patchpoint/stackmap related code to simplify and make it
...
target independent.
Most of the x86 specific stackmap/patchpoint handling was necessitated by the
use of the native address-mode format for frame index operands. PEI has now
been modified to treat stackmap/patchpoint similarly to DEBUG_INFO, allowing
us to use a simple, platform independent register/offset pair for frame
indexes on stackmap/patchpoints.
Notes:
- Folding is now platform independent and automatically supported.
- Emiting patchpoints with direct memory references now just involves calling
the TargetLoweringBase::emitPatchPoint utility method from the target's
XXXTargetLowering::EmitInstrWithCustomInserter method. (See
X86TargetLowering for an example).
- No more ugly platform-specific operand parsers.
This patch shouldn't change the generated output for X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195944 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-29 03:07:54 +00:00
Rafael Espindola
e195f6c29f
Remove an always true parameter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195931 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-28 19:35:07 +00:00
David Blaikie
ecd3f0bce9
DebugInfo: Do not include variables only referenced by templates in aranges.
...
ARanges included even extern variables referenced by pointer non-type
template parameters even though that variable isn't part of this
compilation unit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195895 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-27 23:53:52 +00:00