| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
codegen infrastructure, by default. Please report
any breakage to the mailing lists.
llvm-svn: 58232
|
| |
|
|
| |
llvm-svn: 58231
|
| |
|
|
|
|
| |
FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them.
llvm-svn: 58230
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LargeBlockInfo, we can now dramatically simplify their implementation
and speed them up at the same time. Now the code has time proportional
to the number of uses of the alloca, not the size of the block.
This also eliminates code that tried to batch up different allocas which
are used in the same blocks, and eliminates the 'retry list' logic which
was baroque and no unneccesary. In addition to being a speedup for crazy
cases, this is also a nice cleanup:
PromoteMemoryToRegister.cpp | 270 +++++++++++++++-----------------------------
1 file changed, 96 insertions(+), 174 deletions(-)
llvm-svn: 58229
|
| |
|
|
|
|
|
|
|
| |
a trivial dense map. Use this in RewriteSingleStoreAlloca to
avoid aggressively rescanning blocks over and over again. This
fixes PR2925, speeding up mem2reg on the testcase in that bug
from 4.56s to 0.02s in a debug build on my machine.
llvm-svn: 58227
|
| |
|
|
|
|
| |
150, based on llvm-test measurements.
llvm-svn: 58225
|
| |
|
|
|
|
| |
Thanks to Török Edwin for the awesome reduced testcase.
llvm-svn: 58199
|
| |
|
|
|
|
| |
successor blocks. The mbb can be revisited again after all of the successors are processed.
llvm-svn: 58184
|
| |
|
|
|
|
| |
Patch by Frits van Bommel!
llvm-svn: 58175
|
| |
|
|
| |
llvm-svn: 58174
|
| |
|
|
|
|
| |
actually correspond to what their names suggest.
llvm-svn: 58146
|
| |
|
|
|
|
| |
to reflect that.
llvm-svn: 58145
|
| |
|
|
|
|
|
|
|
|
|
|
| |
target-independent code to target-specific code. This prevents it
from running on targets that aren't using fast-isel.
In addition to saving compile time, this addresses the problem
that not all targets are prepared for it. In order to use this
pass, all instructions must declare all their fixed uses and
defs of physical registers.
llvm-svn: 58144
|
| |
|
|
| |
llvm-svn: 58143
|
| |
|
|
|
|
|
|
| |
variable is moved to the execution engine. The JIT calls the TargetJITInfo
to allocate thread local storage. Currently, only linux/x86 knows how to
allocate thread local global variables.
llvm-svn: 58142
|
| |
|
|
| |
llvm-svn: 58141
|
| |
|
|
| |
llvm-svn: 58133
|
| |
|
|
|
|
| |
llvmAsmParser.h.
llvm-svn: 58130
|
| |
|
|
|
|
| |
split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot.
llvm-svn: 58129
|
| |
|
|
|
|
|
| |
Prevents some more overzealous deletions (mostly
in AltiVec code).
llvm-svn: 58121
|
| |
|
|
|
|
|
|
| |
be saved/restored in the prolog/epilog. We need
to do this iff something in the function stores
into it.
llvm-svn: 58116
|
| |
|
|
| |
llvm-svn: 58104
|
| |
|
|
| |
llvm-svn: 58103
|
| |
|
|
| |
llvm-svn: 58102
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
LHS is a foldable load, then LHS and RHS are swapped
and SetCCOpcode is changed to SETUGT. But the later
code is expecting operands to be the wrong way round
for SETUGT, but they are not in this case, resulting
in an inverted compare. The solution is to move the
load normalization before the correction for SETUGT.
This bug was tickled by LegalizeTypes which happened
to legalize the testcase slightly differently to
LegalizeDAG.
llvm-svn: 58092
|
| |
|
|
|
|
| |
the pregenerated file in from the svn (.cvs). Work only for windows for the moment. Tested on Vista64 with MSVC2008express.
llvm-svn: 58090
|
| |
|
|
| |
llvm-svn: 58075
|
| |
|
|
| |
llvm-svn: 58072
|
| |
|
|
|
|
| |
Understand that mul %x, 1 = %x.
llvm-svn: 58069
|
| |
|
|
|
|
| |
re-materializable val# (for now).
llvm-svn: 58068
|
| |
|
|
|
|
|
| |
fixes a bunch of test-suite JIT failures on x86-64 in
-relocation-model=static mode.
llvm-svn: 58066
|
| |
|
|
| |
llvm-svn: 58057
|
| |
|
|
| |
llvm-svn: 58052
|
| |
|
|
|
|
| |
splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.
llvm-svn: 58044
|
| |
|
|
|
|
|
|
| |
Prevents DeadMachineInstructionElim from thinking
things like MTCTR are dead (fixes massive
testsuite breakage at -O0).
llvm-svn: 58043
|
| |
|
|
|
|
| |
std::ostream API.
llvm-svn: 58042
|
| |
|
|
|
|
| |
with the result number.
llvm-svn: 58041
|
| |
|
|
|
|
|
|
|
|
|
| |
LoopPass*.
- Although less precise, this means they can be used in clients
without RTTI (who would otherwise need to include LoopPass.h, which
eventually includes things using dynamic_cast). This was the
simplest solution that presented itself, but I am happy to use a
better one if available.
llvm-svn: 58010
|
| |
|
|
| |
llvm-svn: 58006
|
| |
|
|
|
|
|
| |
- The old versions are still hanging around, but should be migrated
away from.
llvm-svn: 57989
|
| |
|
|
| |
llvm-svn: 57987
|
| |
|
|
| |
llvm-svn: 57984
|
| |
|
|
| |
llvm-svn: 57973
|
| |
|
|
|
|
|
|
|
| |
assume that i64 has been turned into a BUILD_PAIR
node (when called from LegalizeTypes this hasn't
happened yet) and don't use a vector shuffle mask
with an illegal element type.
llvm-svn: 57972
|
| |
|
|
|
|
|
|
|
|
|
|
| |
may return i8, which can result in SELECT nodes for
which the type of the condition is i8, but there are
no patterns for select with i8 condition. Tweak the
LegalizeTypes logic to avoid this as much as possible.
This isn't a real fix because it is still perfectly
possible to end up with such select nodes - CellSPU
needs to be fixed IMHO.
llvm-svn: 57968
|
| |
|
|
|
|
| |
ADDC/ADDE/SUBC/SUBE if the target supports it.
llvm-svn: 57967
|
| |
|
|
|
|
|
|
| |
that is not of type MVT::i1 in SELECT and SETCC nodes.
Relax the LegalizeTypes SELECT condition promotion
sanity checks to allow other condition types than i1.
llvm-svn: 57966
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to have a different type to the vector element
type. This should be fairly harmless because in
the past guys like this were being built all over
the place (and were cleaned up when I added this
check). The reason for relaxing this check is
that it helps LegalizeTypes legalize vector
shuffles: the mask is a BUILD_VECTOR that it is
*not always possible* to legalize while keeping it
a BUILD_VECTOR (vector_shuffle requires the mask
to be a BUILD_VECTOR, as opposed to a vector with
the right vector type). With this check it is even
harder to legalize the mask - turning the check off
means that LegalizeTypes manages to legalize almost
all vector shuffles encountered in practice. The
correct solution is to change vector_shuffle to be a
variadic node with the mask built into it as operands.
While waiting for that change, this hack stops the
problem with vector_shuffle from blocking the turning
on of LegalizeTypes.
llvm-svn: 57965
|
| |
|
|
|
|
| |
are their operands.
llvm-svn: 57956
|
| |
|
|
| |
llvm-svn: 57946
|