| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 59093
|
| |
|
|
| |
llvm-svn: 59092
|
| |
|
|
| |
llvm-svn: 59077
|
| |
|
|
| |
llvm-svn: 59068
|
| |
|
|
| |
llvm-svn: 59063
|
| |
|
|
| |
llvm-svn: 59039
|
| |
|
|
| |
llvm-svn: 59012
|
| |
|
|
| |
llvm-svn: 59011
|
| |
|
|
|
|
| |
then do not split loop index.
llvm-svn: 58995
|
| |
|
|
|
|
|
| |
The previous patches didn't match correctly. Also, we need to make sure that
the conditional is the same before doing the transformation.
llvm-svn: 58978
|
| |
|
|
|
|
| |
<result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask>
llvm-svn: 58964
|
| |
|
|
|
|
| |
of the select match, not the select instruction itself.
llvm-svn: 58947
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
original code was matching like this:
if (match(A, m_Not(m_Value(B))))
B was already matched as a 'select' instruction. However, this isn't matching
what we think it's matching. It would match B as a 'Value', so basically
anything would match to it. In this case, a Constant matched. B was replaced
with a constant representation. And then the wrong value would be used in the
SelectInst::Create statement, causing a crash.
After thinking on this for a moment, and after Nick L. told me how the pattern
matching stuff was supposed to work, the solution was to match NOT an m_Value,
but an m_Select.
llvm-svn: 58946
|
| |
|
|
| |
llvm-svn: 58933
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to generate signed ICMP instructions to replace the FCMP. This would violate
the following:
define i1 @test1(i32 %val) {
%1 = uitofp i32 %val to double
%2 = fcmp ole double %1, 0.000000e+00
ret i1 %2
}
would be transformed into:
define i1 @test1(i32 %val) {
%1 = icmp slt i33 %val, 1
ret i1 %1
}
which is obviously wrong. This patch modifes InstCombiner::FoldFCmp_IntToFP_Cst
to handle when the LHS comes from UIToFP.
llvm-svn: 58929
|
| |
|
|
|
|
|
|
| |
promotion.
- Eliminate uses after free and simplify tests.
Devang: Please check that this is still doing what you intended.
llvm-svn: 58887
|
| |
|
|
| |
llvm-svn: 58830
|
| |
|
|
| |
llvm-svn: 58826
|
| |
|
|
|
|
| |
when simplify a vector.
llvm-svn: 58820
|
| |
|
|
| |
llvm-svn: 58787
|
| |
|
|
| |
llvm-svn: 58744
|
| |
|
|
| |
llvm-svn: 58742
|
| |
|
|
| |
llvm-svn: 58736
|
| |
|
|
|
|
| |
a specialized pass that it not likely to be generally useful.
llvm-svn: 58732
|
| |
|
|
|
|
|
| |
huge performance regression in something we care
about. This may not be final fix.
llvm-svn: 58718
|
| |
|
|
| |
llvm-svn: 58651
|
| |
|
|
| |
llvm-svn: 58631
|
| |
|
|
|
|
| |
would be hard pressed to be considered a sentence, but if it makes Bill happy...
llvm-svn: 58630
|
| |
|
|
|
|
|
|
| |
This allows SCEV users to effectively calculate trip count.
LSR later on transforms back integer IVs to floating point IVs
later on to avoid int-to-float casts inside the loop.
llvm-svn: 58625
|
| |
|
|
|
|
| |
specializing
llvm-svn: 58615
|
| |
|
|
| |
llvm-svn: 58593
|
| |
|
|
|
|
|
|
| |
* merge two weak functions by making them both alias a third non-weak fn
* don't reimplement CallSite::hasArgument
* whitelist the safe linkage types
llvm-svn: 58568
|
| |
|
|
|
|
|
| |
cast from ‘const llvm::PointerType*’ to ‘unsigned int’
loses precision).
llvm-svn: 58561
|
| |
|
|
| |
llvm-svn: 58559
|
| |
|
|
|
|
|
|
| |
This triggers only 60 times in llvm-test (look at .llvm.bc, not .linked.rbc)
and so it probably wont be turned on by default. Also, may of those are likely
to go away when PR2973 is fixed.
llvm-svn: 58557
|
| |
|
|
|
|
| |
by Richard Osborne.
llvm-svn: 58555
|
| |
|
|
|
|
|
| |
ConstantInt, and SI is the original cast instruction. This fixes
PR2996.
llvm-svn: 58549
|
| |
|
|
| |
llvm-svn: 58486
|
| |
|
|
|
|
| |
optimizations accordingly.
llvm-svn: 58457
|
| |
|
|
|
|
|
|
|
| |
function.
- This explicitly models the costs for functions which should
"always" or "never" be inlined. This fixes bugs where such costs
were not previously respected.
llvm-svn: 58450
|
| |
|
|
|
|
|
| |
I don't really see this as being needed, but there is little harm from doing
it.
llvm-svn: 58385
|
| |
|
|
|
|
| |
- No functionality change.
llvm-svn: 58355
|
| |
|
|
|
|
| |
- No functionality change.
llvm-svn: 58352
|
| |
|
|
| |
llvm-svn: 58351
|
| |
|
|
|
|
| |
that need it to require it by ID.
llvm-svn: 58238
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
Understand that mul %x, 1 = %x.
llvm-svn: 58069
|
| |
|
|
|
|
|
|
|
|
|
| |
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: 57870
|