| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 186893
|
| |
|
|
| |
llvm-svn: 186892
|
| |
|
|
| |
llvm-svn: 186890
|
| |
|
|
|
|
| |
that create a cycle. We already break the cycle on phi-nodes, but arithmetic operations are still uplicated. This patch adds code that checks if the operation that we are vectorizing was vectorized during the visit of the operands and uses this value if it can.
llvm-svn: 186883
|
| |
|
|
| |
llvm-svn: 186880
|
| |
|
|
| |
llvm-svn: 186877
|
| |
|
|
| |
llvm-svn: 186858
|
| |
|
|
|
|
|
|
| |
wrong variable. The variable BlockCost is ignored.
We don't have tests for the effect of if-conversion loops because it requires a big test (that includes if-converted loops) and it is difficult to find and balance a loop to do the right thing.
llvm-svn: 186845
|
| |
|
|
| |
llvm-svn: 186808
|
| |
|
|
| |
llvm-svn: 186790
|
| |
|
|
|
|
| |
to iterate over.
llvm-svn: 186788
|
| |
|
|
| |
llvm-svn: 186786
|
| |
|
|
|
|
|
|
|
|
|
|
| |
helper function. This leaves both trivial cases handled entirely in
helper functions and merely manages the list of allocas to process in
the run method.
The next step will be to handle all of the trivial promotion work prior
to even creating the core class and the subsequent simplifications that
enables.
llvm-svn: 186784
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
a single block into the helper routine. This takes advantage of the fact
that we can directly replace uses prior to any store with undef to
simplify matters and unconditionally promote allocas only used within
one block.
I've removed the special handling for the case of no stores existing.
This has no semantic effect but might slow things down. I'll fix that in
a later patch when I refactor this entire thing to be easier to manage
the different cases.
llvm-svn: 186783
|
| |
|
|
| |
llvm-svn: 186782
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
handles the general cases.
The hope is to refactor this so that we don't end up building the entire
class for the trivial cases. I also want to lift a lot of the early
pre-processing in the initial segment of run() into a separate routine,
and really none of it needs to happen inside the primary promotion
class.
These routines in particular used none of the actual state in the
promotion class, so they don't really make sense as members.
llvm-svn: 186781
|
| |
|
|
|
|
|
|
| |
This struct is nicely independent of everything else, and we already
needed a foward declaration here. It's simpler to just define it
immediately.
llvm-svn: 186780
|
| |
|
|
| |
llvm-svn: 186779
|
| |
|
|
|
|
|
|
| |
GlobalOpt simplifies llvm.compiler.used by removing any members that are also
in the more strict llvm.used. Handle the special case where llvm.compiler.used
becomes empty.
llvm-svn: 186778
|
| |
|
|
|
|
| |
that ensued from that.
llvm-svn: 186777
|
| |
|
|
|
|
| |
pattern and conform to the naming conventions.
llvm-svn: 186776
|
| |
|
|
|
|
| |
subsequent changes don't introduce inconsistencies.
llvm-svn: 186775
|
| |
|
|
|
|
| |
those baked into DenseMap now.
llvm-svn: 186773
|
| |
|
|
|
|
| |
functionality changed.
llvm-svn: 186772
|
| |
|
|
|
|
| |
While there replace an explicit struct with std::mem_fun.
llvm-svn: 186761
|
| |
|
|
| |
llvm-svn: 186759
|
| |
|
|
| |
llvm-svn: 186733
|
| |
|
|
| |
llvm-svn: 186732
|
| |
|
|
|
|
| |
conditions that check GEPs and eliminate two of the calls to accumulateConstantOffset.
llvm-svn: 186731
|
| |
|
|
|
|
|
| |
We were incorrectly using compiler_used instead of compiler.used. Unfortunately
the passes using the broken name had tests also using the broken name.
llvm-svn: 186705
|
| |
|
|
|
|
| |
count the right things and have the right names.
llvm-svn: 186667
|
| |
|
|
|
|
|
| |
test case came from Benjamin and found the parallel bug in the vector
promotion code.
llvm-svn: 186666
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implementation of the SROA algorithm. We were using the term 'partition'
in many places that no longer ever represented an actual partition, but
rather just an arbitrary slice of an alloca.
No functionality change intended here. Mostly just renaming of types,
functions, variables, and rewording of comments. Several comments were
rewritten to make a lot more sense in the new structure of things.
The stats are still weird and not reflective of how this really works.
I'll fix those up in a separate patch as it is a touch more semantic of
a change...
llvm-svn: 186659
|
| |
|
|
|
|
| |
DataLayout variables.
llvm-svn: 186656
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
SROA.
The crux of the issue is that now we track uses of a partition of the
alloca in two places: the iterators over the partitioning uses and the
previously collected split uses vector. We weren't accounting for the
fact that the split uses might invalidate integer widening in ways other
than due to their width (in this case due to being volatile).
Further reduced testcase added to the tests.
llvm-svn: 186655
|
| |
|
|
|
|
|
| |
uses that wanted it. Also change the interface for createCompileUnit
to compensate. Fix comments that refer to TheCU as well.
llvm-svn: 186637
|
| |
|
|
| |
llvm-svn: 186622
|
| |
|
|
|
|
| |
This reverts commit r186599 as I didn't want to commit this yet.
llvm-svn: 186601
|
| |
|
|
|
|
|
| |
uses that wanted it. Also change the interface for createCompileUnit
to compensate. Fix comments that refer to TheCU as well.
llvm-svn: 186599
|
| |
|
|
| |
llvm-svn: 186593
|
| |
|
|
|
|
|
|
| |
indices.
This brings the compile time of the SLP-Vectorizer to about 2.5% of OPT for my testcase.
llvm-svn: 186592
|
| |
|
|
|
|
|
|
|
|
|
|
| |
end of a vector. This was found with ASan. I've had one other report of
a crasher, but thus far been unable to reproduce the crash. It may well
be fixed with this version, and if not I'd like to get more information
from the build bots about what is happening.
See r186316 for the full commit log for the new implementation of the
SROA algorithm.
llvm-svn: 186565
|
| |
|
|
|
|
| |
consecutive in memory) by checking for additional patterns that don't need to go through SCEV.
llvm-svn: 186563
|
| |
|
|
|
|
|
|
| |
of operator bool change.
Also convert a variable in DebugIR.
llvm-svn: 186544
|
| |
|
|
| |
llvm-svn: 186541
|
| |
|
|
| |
llvm-svn: 186533
|
| |
|
|
| |
llvm-svn: 186531
|
| |
|
|
|
|
|
|
| |
Duncan pointed out a mistake in my fix in r186425 when only one of the allocas
being compared had the target-default alignment. This is essentially his
suggested solution. Thanks!
llvm-svn: 186510
|
| |
|
|
| |
llvm-svn: 186485
|
| |
|
|
| |
llvm-svn: 186484
|