| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 129616
|
|
|
|
|
|
| |
a case involving EOR, so I only added a test for ORR.
llvm-svn: 129610
|
|
|
|
| |
llvm-svn: 129607
|
|
|
|
|
|
| |
problem as all of the other instructions we fold with CMPs.
llvm-svn: 129602
|
|
|
|
|
|
| |
fixes <rdar://problem/9287901>.
llvm-svn: 129599
|
|
|
|
|
|
| |
register allocation. Define pseudos that get expanded into mtc1 or mfc1 instructions.
llvm-svn: 129594
|
|
|
|
|
|
|
|
|
| |
debug info.
Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.
llvm-svn: 129571
|
|
|
|
|
|
|
|
| |
This reduces the"
It broke several builds.
llvm-svn: 129557
|
|
|
|
|
|
| |
forget to right shift the source by 32 first. rdar://9287902
llvm-svn: 129556
|
|
|
|
| |
llvm-svn: 129551
|
|
|
|
| |
llvm-svn: 129548
|
|
|
|
|
|
| |
size of the clang binary in Debug builds from 690MB to 679MB.
llvm-svn: 129518
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is done by pushing physical register definitions close to their
use, which happens to handle flag definitions if they're not glued to
the branch. This seems to be generally a good thing though, so I
didn't need to add a target hook yet.
The primary motivation is to generate code closer to what people
expect and rule out missed opportunity from enabling macro-op
fusion. As a side benefit, we get several 2-5% gains on x86
benchmarks. There is one regression:
SingleSource/Benchmarks/Shootout/lists slows down be -10%. But this is
an independent scheduler bug that will be tracked separately.
See rdar://problem/9283108.
Incidentally, pre-RA scheduling is only half the solution. Fixing the
later passes is tracked by:
<rdar://problem/8932804> [pre-RA-sched] on x86, attempt to schedule CMP/TEST adjacent with condition jump
Fixes:
<rdar://problem/9262453> Scheduler unnecessary break of cmp/jump fusion
llvm-svn: 129508
|
|
|
|
|
|
| |
(movzx/movsx) because they give more information. Revert that part of the patch.
llvm-svn: 129498
|
|
|
|
|
|
| |
cases, it's much nicer and more informative reading the alias.
llvm-svn: 129497
|
|
|
|
| |
llvm-svn: 129468
|
|
|
|
|
|
|
| |
ignored. There was a test to catch this, but it was just blindly updated in
a large change. This fixes another part of <rdar://problem/9275290>.
llvm-svn: 129466
|
|
|
|
|
|
|
| |
the max itself, so it is not easy to write a test case for this, but I added a
test case that would fail if the code in AsmPrinter were removed.
llvm-svn: 129432
|
|
|
|
|
|
|
| |
alignment for its type, use the minimum of the specified alignment and the ABI
alignment. This fixes <rdar://problem/9275290>.
llvm-svn: 129428
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
latency.
Additional fixes:
Do something reasonable for subtargets with generic
itineraries by handle node latency the same as for an empty
itinerary. Now nodes default to unit latency unless an itinerary
explicitly specifies a zero cycle stage or it is a TokenFactor chain.
Original fixes:
UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make the ndoe latency adjustments work, I also
needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.
llvm-svn: 129421
|
|
|
|
| |
llvm-svn: 129419
|
|
|
|
| |
llvm-svn: 129417
|
|
|
|
|
|
|
|
| |
registers for fast allocation.
Fixes rdar://9207598
llvm-svn: 129408
|
|
|
|
| |
llvm-svn: 129403
|
|
|
|
|
|
|
|
|
| |
Now that we have a first-class way to represent unaligned loads, the unaligned
load intrinsics are superfluous.
First part of <rdar://problem/8460511>.
llvm-svn: 129401
|
|
|
|
| |
llvm-svn: 129385
|
|
|
|
|
|
|
|
|
|
|
|
| |
UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make these heuristic adjustments to node latency work,
I also needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.
llvm-svn: 129383
|
|
|
|
|
|
|
| |
stores of arguments in the same cache line. This fixes the second half of
<rdar://problem/8674845>.
llvm-svn: 129345
|
|
|
|
| |
llvm-svn: 129311
|
|
|
|
|
|
| |
more copies. rdar://9266679
llvm-svn: 129297
|
|
|
|
|
|
| |
for pointing this out
llvm-svn: 129217
|
|
|
|
|
|
|
| |
delete the instruction pointed to by CGP's current instruction
iterator, leading to a crash on the testcase. This fixes PR9578.
llvm-svn: 129200
|
|
|
|
| |
llvm-svn: 129195
|
|
|
|
|
|
|
| |
they thought they were, because alternation was expanding
wrong in {{}}'s.
llvm-svn: 129194
|
|
|
|
|
|
| |
with undef arguments.
llvm-svn: 129185
|
|
|
|
| |
llvm-svn: 129184
|
|
|
|
|
|
| |
is lowered into a call to the specified trap function at sdisel time.
llvm-svn: 129152
|
|
|
|
|
|
| |
instruction. rdar://9249183.
llvm-svn: 129107
|
|
|
|
|
|
|
|
|
| |
induction variable. The preRA scheduler is unaware of induction vars,
so we look for potential "virtual register cycles" instead.
Fixes <rdar://problem/8946719> Bad scheduling prevents coalescing
llvm-svn: 129100
|
|
|
|
| |
llvm-svn: 129099
|
|
|
|
|
|
| |
vector type (vectors of size 3). Also included test cases.
llvm-svn: 129074
|
|
|
|
| |
llvm-svn: 129045
|
|
|
|
|
|
| |
folded comparisons, just like ADD and SUB.
llvm-svn: 129038
|
|
|
|
|
|
| |
coalescing is now universal.
llvm-svn: 128936
|
|
|
|
| |
llvm-svn: 128935
|
|
|
|
| |
llvm-svn: 128919
|
|
|
|
|
|
|
|
| |
def into the remaining use.
Rematerialization can leave single-use loads behind that we might as well fold whenever possible.
llvm-svn: 128918
|
|
|
|
| |
llvm-svn: 128906
|
|
|
|
| |
llvm-svn: 128891
|
|
|
|
|
|
|
|
|
|
|
|
| |
addRegisterDead().
There can be multiple defs for a single virtual register when they are defining
sub-registers.
The missing <dead> flag was stopping the inline spiller from eliminating dead
code after rematerialization.
llvm-svn: 128888
|