| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 125547
|
|
|
|
|
|
|
| |
reassociation. No testcase, because I wasn't able to create a testcase
which actually demonstrates a problem.
llvm-svn: 124713
|
|
|
|
| |
llvm-svn: 123968
|
|
|
|
| |
llvm-svn: 123965
|
|
|
|
|
|
|
| |
a select. A vector select is pairwise on each element so we'd need a new
condition with the right number of elements to select on. Fixes PR8994.
llvm-svn: 123963
|
|
|
|
|
|
| |
of phis.
llvm-svn: 123569
|
|
|
|
|
|
|
|
| |
multiple uses. In some cases, all the uses are the same operation,
so instcombine can go ahead and promote the phi. In the testcase
this pushes an add out of the loop.
llvm-svn: 123568
|
|
|
|
|
|
|
|
| |
in the
first line of the function because it isn't a good idea, even for compares.
llvm-svn: 123566
|
|
|
|
| |
llvm-svn: 123565
|
|
|
|
| |
llvm-svn: 123564
|
|
|
|
|
|
|
|
| |
if both A op B and A op C simplify. This fires fairly often but doesn't
make that much difference. On gcc-as-one-file it removes two "and"s and
turns one branch into a select.
llvm-svn: 122399
|
|
|
|
|
|
| |
instcombine is compared to instsimplify.
llvm-svn: 122397
|
|
|
|
| |
llvm-svn: 122204
|
|
|
|
| |
llvm-svn: 122183
|
|
|
|
|
|
| |
has no other uses, shrinking the load.
llvm-svn: 120323
|
|
|
|
| |
llvm-svn: 120051
|
|
|
|
|
|
| |
Stylistic improvement suggested by Frits van Bommel.
llvm-svn: 120026
|
|
|
|
| |
llvm-svn: 120025
|
|
|
|
|
|
|
|
|
|
|
|
| |
fairly systematic way in instcombine. Some of these cases were already dealt
with, in which case I removed the existing code. The case of Add has a bunch of
funky logic which covers some of this plus a few variants (considers shifts to be
a form of multiplication), which I didn't touch. The simplification performed is:
A*B+A*C -> A*(B+C). The improvement is to do this in cases that were not already
handled [such as A*B-A*C -> A*(B-C), which was reported on the mailing list], and
also to do it more often by not checking for "only one use" if "B+C" simplifies.
llvm-svn: 120024
|
|
|
|
|
|
| |
then replace the index with zero.
llvm-svn: 119974
|
|
|
|
|
|
| |
InstructionSimplify.
llvm-svn: 119970
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SimplifyAssociativeOrCommutative) "(A op C1) op C2" -> "A op (C1 op C2)",
which previously was only done if C1 and C2 were constants, to occur whenever
"C1 op C2" simplifies (a la InstructionSimplify). Since the simplifying operand
combination can no longer be assumed to be the right-hand terms, consider all of
the possible permutations. When compiling "gcc as one big file", transform 2
(i.e. using right-hand operands) fires about 4000 times but it has to be said
that most of the time the simplifying operands are both constants. Transforms
3, 4 and 5 each fired once. Transform 6, which is an existing transform that
I didn't change, never fired. With this change, the testcase is now optimized
perfectly with one run of instcombine (previously it required instcombine +
reassociate + instcombine, and it may just have been luck that this worked).
llvm-svn: 119002
|
|
|
|
| |
llvm-svn: 117213
|
|
|
|
| |
llvm-svn: 115996
|
|
|
|
| |
llvm-svn: 115965
|
|
|
|
| |
llvm-svn: 109045
|
|
|
|
| |
llvm-svn: 107972
|
|
|
|
|
|
| |
smoothly
llvm-svn: 106736
|
|
|
|
|
|
| |
to null. Patch by Matti Niemenmaa.
llvm-svn: 104871
|
|
|
|
|
|
|
| |
Probably the best way to know that all getOperand() calls have been handled
is to replace that API instead of updating.
llvm-svn: 101579
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with a fix for self-hosting
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101465
|
|
|
|
| |
llvm-svn: 101434
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with a fix
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101397
|
|
|
|
| |
llvm-svn: 101368
|
|
|
|
|
|
|
|
|
|
| |
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101364
|
|
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
|
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
|
|
|
|
| |
llvm-svn: 92964
|
|
|
|
| |
llvm-svn: 92771
|
|
|
|
| |
llvm-svn: 92760
|
|
|
|
|
|
| |
non-zero trip count. Use SmallVector's pop_back_val().
llvm-svn: 92734
|
|
|
|
| |
llvm-svn: 92712
|
|
|
|
|
|
| |
it does make sense to keep them together, at least for now.
llvm-svn: 92711
|
|
|
|
| |
llvm-svn: 92710
|
|
|
|
| |
llvm-svn: 92708
|
|
|
|
| |
llvm-svn: 92707
|
|
|
|
|
|
| |
leading/trailing bits. Patch by Alastair Lynn!
llvm-svn: 92706
|
|
|
|
| |
llvm-svn: 92705
|
|
|
|
|
|
|
| |
dyn_castNotVal in the X+~X transform. dyn_castNotVal is
dramatic overkill for what the xform needed.
llvm-svn: 92704
|
|
|
|
|
|
| |
and simplify.
llvm-svn: 92700
|