| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
case.
Found by libstdc++'s debug mode.
llvm-svn: 157522
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
them by using edge weights.
SimplifyCFG tends to form a lot of 2-3 case switches when merging branches. Move
the most likely condition to the front so it is checked first and the others can
be skipped. This is currently not as effective as it could be because SimplifyCFG
destroys profiling metadata when merging branches and switches. Merging branch
weight metadata is tricky though.
This code touches at most 3 cases so I didn't use a proper sorting algorithm.
llvm-svn: 157521
|
| |
|
|
|
|
|
|
|
|
|
| |
then it doesn't alter the instructions composing it, however it would continue
to move the instructions to just before the expression root. Ensure it doesn't
move them either, so now it really does nothing if there is nothing to do. That
commit also ensured that nsw etc flags weren't cleared if the expression was not
being changed. Tweak this a bit so that it doesn't clear flags on the initial
part of a computation either if that part didn't change but later bits did.
llvm-svn: 157518
|
| |
|
|
|
|
| |
explicit struct.
llvm-svn: 157516
|
| |
|
|
|
|
| |
places.
llvm-svn: 157515
|
| |
|
|
|
|
| |
Negative cycles are filtered out earlier.
llvm-svn: 157514
|
| |
|
|
|
|
| |
which operands come flying out of the linearization stage.
llvm-svn: 157512
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
are passed in. However, those arguments may be in a write-protected area, as far
as the runtime library is concerned. For instance, the data could be placed into
a 'linkedit' section, which isn't writable. Emit the code from
llvm_gcda_increment_indirect_counter directly into the function instead.
Note: The code for this is ugly, and can lead to bloat. We should look into
simplifying this code instead of having all of these branches.
<rdar://problem/11181370>
llvm-svn: 157505
|
| |
|
|
|
|
| |
Benjamin Kramer.
llvm-svn: 157504
|
| |
|
|
| |
llvm-svn: 157498
|
| |
|
|
| |
llvm-svn: 157496
|
| |
|
|
|
|
| |
Delete MipsExpandPseudo.
llvm-svn: 157495
|
| |
|
|
| |
llvm-svn: 157494
|
| |
|
|
| |
llvm-svn: 157493
|
| |
|
|
| |
llvm-svn: 157492
|
| |
|
|
|
|
|
| |
add support for select
add experimental support for alloc_size metadata
llvm-svn: 157481
|
| |
|
|
|
|
|
|
|
|
| |
to pass around a struct instead of a large set of individual values. This
cleans up the interface and allows more information to be added to the struct
for future targets without requiring changes to each and every target.
NV_CONTRIB
llvm-svn: 157479
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with arbitrary topologies (previously it would give up when hitting a diamond
in the use graph for example). The testcase from PR12764 is now reduced from
a pile of additions to the optimal 1617*%x0+208. In doing this I changed the
previous strategy of dropping all uses for expression leaves to one of dropping
all but one use. This works out more neatly (but required a bunch of tweaks)
and is also safer: some recently fixed bugs during recursive linearization were
because the linearization code thinks it completely owns a node if it has no uses
outside the expression it is linearizing. But if the node was also in another
expression that had been linearized (and thus all uses of the node from that
expression dropped) then the conclusion that it is completely owned by the
expression currently being linearized is wrong. Keeping one use from within each
linearized expression avoids this kind of mistake.
llvm-svn: 157467
|
| |
|
|
| |
llvm-svn: 157455
|
| |
|
|
|
|
|
| |
Store (debugging) register names as offsets into a string table instead
of as char pointers.
llvm-svn: 157449
|
| |
|
|
|
|
| |
small bug in the process.
llvm-svn: 157446
|
| |
|
|
| |
llvm-svn: 157438
|
| |
|
|
|
|
| |
(except the part about choosing direction)
llvm-svn: 157437
|
| |
|
|
| |
llvm-svn: 157433
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Like this:
foreach i = 0-127 in ...
Use braces for composite ranges:
foreach i = {0-3,9-7} in ...
llvm-svn: 157432
|
| |
|
|
|
|
| |
Only fully expanded Records should go into RecordKeeper.
llvm-svn: 157431
|
| |
|
|
|
|
| |
Use static type checking.
llvm-svn: 157430
|
| |
|
|
| |
llvm-svn: 157429
|
| |
|
|
| |
llvm-svn: 157428
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Hazard checker implements in-order contraints, or interlocked
resources. Ready instructions with hazards do not enter the available
queue and are not visible to other heuristics.
The major code change is the addition of SchedBoundary to encapsulate
the state at the top or bottom of the schedule, including both a
pending and available queue.
The scheduler now counts cycles in sync with the hazard checker. These
are minimum cycle counts based on known hazards.
Targets with no itinerary (x86_64) currently remain at cycle 0. To fix
this, we need to provide some maximum issue width for all targets. We
also need to add the concept of expected latency vs. minimum latency.
llvm-svn: 157427
|
| |
|
|
| |
llvm-svn: 157426
|
| |
|
|
| |
llvm-svn: 157425
|
| |
|
|
| |
llvm-svn: 157424
|
| |
|
|
| |
llvm-svn: 157423
|
| |
|
|
| |
llvm-svn: 157422
|
| |
|
|
|
|
|
|
| |
This back-end was deprecated in favor of the NVPTX back-end.
NV_CONTRIB
llvm-svn: 157417
|
| |
|
|
|
|
|
|
| |
Expand test case for this.
Patch by Reed Kotler.
llvm-svn: 157410
|
| |
|
|
|
|
|
|
| |
First code from the Mips16 compiler. Includes trivial test program.
Patch by Reed Kotler.
llvm-svn: 157408
|
| |
|
|
|
|
| |
I'm not sure it's really worth expressing this as a range rather than 3 specific equalities, but it doesn't seem fundamentally wrong either.
llvm-svn: 157398
|
| |
|
|
|
|
|
|
|
|
| |
Submitted by: Anton Lokhmotov <Anton.Lokhmotov@arm.com>
Approved by: o Anton Korobeynikov
o Micah Villmow
o David Neto
llvm-svn: 157393
|
| |
|
|
|
|
|
| |
LowerSwitch::Clusterify : main functinality was replaced with CRSBuilder::optimize, so big part of Clusterify's code was reduced.
test/Transform/LowerSwitch/feature.ll - this test was refactored: grep + count was replaced with FileCheck usage.
llvm-svn: 157384
|
| |
|
|
| |
llvm-svn: 157381
|
| |
|
|
| |
llvm-svn: 157380
|
| |
|
|
| |
llvm-svn: 157377
|
| |
|
|
| |
llvm-svn: 157375
|
| |
|
|
| |
llvm-svn: 157374
|
| |
|
|
|
|
| |
to pass the tables around.
llvm-svn: 157373
|
| |
|
|
|
|
| |
sizeof/sizeof.
llvm-svn: 157369
|
| |
|
|
| |
llvm-svn: 157368
|
| |
|
|
|
|
| |
uint16_t. Simplify loop iterating over one of those tables. No functional change intended.
llvm-svn: 157367
|