| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 155229
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This nicely handles the most common case of virtual register sets, but
also handles anticipated cases where we will map pointers to IDs.
The goal is not to develop a completely generic SparseSet
template. Instead we want to handle the expected uses within llvm
without any template antics in the client code. I'm adding a bit of
template nastiness here, and some assumption about expected usage in
order to make the client code very clean.
The expected common uses cases I'm designing for:
- integer keys that need to be reindexed, and may map to additional
data
- densely numbered objects where we want pointer keys because no
number->object map exists.
llvm-svn: 155227
|
| |
|
|
| |
llvm-svn: 155226
|
| |
|
|
|
|
|
|
| |
Use the new TwoOperandAliasConstraint to handle lots of the two-operand aliases
for NEON instructions. There's still more to go, but this is a good chunk of
them.
llvm-svn: 155210
|
| |
|
|
| |
llvm-svn: 155195
|
| |
|
|
|
|
|
|
|
| |
(load only has one operand) and smuggle in some whitespace changes too
NB: I am obviously testing the water here, and believe that the unguarded
cast is still wrong, but why is the getZExtValue of the load's operand
tested against zero here? Any review is appreciated.
llvm-svn: 155190
|
| |
|
|
|
|
| |
since they are equivalent.
llvm-svn: 155188
|
| |
|
|
|
|
| |
since they are equivalent.
llvm-svn: 155186
|
| |
|
|
|
|
|
|
|
| |
While the patch was perfect and defect free, it exposed a really nasty
bug in X86 SelectionDAG that caused an llc crash when compiling lencod.
I'll put the patch back in after fixing the SelectionDAG problem.
llvm-svn: 155181
|
| |
|
|
| |
llvm-svn: 155178
|
| |
|
|
|
|
| |
No need for these explicit aliases anymore. Nuke 'em.
llvm-svn: 155173
|
| |
|
|
| |
llvm-svn: 155166
|
| |
|
|
|
|
| |
loop repeatedlt making the same change. This is for rdar://11256239.
llvm-svn: 155160
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The shl instruction is used to represent multiplication by a constant
power of two as well as bitwise left shifts. Some InstCombine
transformations would turn an shl instruction into a bit mask operation,
making it difficult for later analysis passes to recognize the
constsnt multiplication.
Disable those shl transformations, deferring them to DAGCombine time.
An 'shl X, C' instruction is now treated mostly the same was as 'mul X, C'.
These transformations are deferred:
(X >>? C) << C --> X & (-1 << C) (When X >> C has multiple uses)
(X >>? C1) << C2 --> X << (C2-C1) & (-1 << C2) (When C2 > C1)
(X >>? C1) << C2 --> X >>? (C1-C2) & (-1 << C2) (When C1 > C2)
The corresponding exact transformations are preserved, just like
div-exact + mul:
(X >>?,exact C) << C --> X
(X >>?,exact C1) << C2 --> X << (C2-C1)
(X >>?,exact C1) << C2 --> X >>?,exact (C1-C2)
The disabled transformations could also prevent the instruction selector
from recognizing rotate patterns in hash functions and cryptographic
primitives. I have a test case for that, but it is too fragile.
llvm-svn: 155136
|
| |
|
|
| |
llvm-svn: 155128
|
| |
|
|
| |
llvm-svn: 155090
|
| |
|
|
|
|
|
| |
symbolicated. These have and operand type of TYPE_RELv which was not handled
as isBranch in translateImmediate() in X86Disassembler.cpp. rdar://11268426
llvm-svn: 155074
|
| |
|
|
|
|
| |
a function with arguments. This fixes rdar://11265785.
llvm-svn: 155073
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
commits have had several major issues pointed out in review, and those
issues are not being addressed in a timely fashion. Furthermore, this
was all committed leading up to the v3.1 branch, and we don't need piles
of code with outstanding issues in the branch.
It is possible that not all of these commits were necessary to revert to
get us back to a green state, but I'm going to let the Hexagon
maintainer sort that out. They can recommit, in order, after addressing
the feedback.
Reverted commits, with some notes:
Primary commit r154616: HexagonPacketizer
- There are lots of review comments here. This is the primary reason
for reverting. In particular, it introduced large amount of warnings
due to a bad construct in tablegen.
- Follow-up commits that should be folded back into this when
reposting:
- r154622: CMake fixes
- r154660: Fix numerous build warnings in release builds.
- Please don't resubmit this until the three commits above are
included, and the issues in review addressed.
Primary commit r154695: Pass to replace transfer/copy ...
- Reverted to minimize merge conflicts. I'm not aware of specific
issues with this patch.
Primary commit r154703: New Value Jump.
- Primarily reverted due to merge conflicts.
- Follow-up commits that should be folded back into this when
reposting:
- r154703: Remove iostream usage
- r154758: Fix CMake builds
- r154759: Fix build warnings in release builds
- Please incorporate these fixes and and review feedback before
resubmitting.
Primary commit r154829: Hexagon V5 (floating point) support.
- Primarily reverted due to merge conflicts.
- Follow-up commits that should be folded back into this when
reposting:
- r154841: Remove unused variable (fixing build warnings)
There are also accompanying Clang commits that will be reverted for
consistency.
llvm-svn: 155047
|
| |
|
|
|
|
| |
std::for_each. Turns out std::for_each doesn't update the variable passed in for the functor but instead copy constructs a new one.
llvm-svn: 155041
|
| |
|
|
|
|
| |
Same color scheme as clang uses. The colors are only enabled if the output is a tty.
llvm-svn: 155035
|
| |
|
|
|
|
| |
isRematerializable.
llvm-svn: 155031
|
| |
|
|
| |
llvm-svn: 155030
|
| |
|
|
| |
llvm-svn: 155016
|
| |
|
|
| |
llvm-svn: 155012
|
| |
|
|
| |
llvm-svn: 155004
|
| |
|
|
|
|
| |
instructions on ARM. Now the diasassembler emmits warnings instead of errors.
llvm-svn: 155002
|
| |
|
|
|
|
| |
disassembler. Since the upredicability conditions are complex, C++ code was added to handle them.
llvm-svn: 155001
|
| |
|
|
|
|
| |
coprocessor number was removed for this instruction.
llvm-svn: 155000
|
| |
|
|
|
|
| |
instructions in the disassembler.
llvm-svn: 154999
|
| |
|
|
|
|
|
|
|
|
| |
a bad one ourselves.
DenseMap's hash function uses slightly more entropy and reduces hash collisions
significantly. I also experimented with Hashing.h, but it didn't gave a lot of
improvement while being much more expensive to compute.
llvm-svn: 154996
|
| |
|
|
|
|
|
|
|
|
|
| |
If the loop contains invoke instructions, whose unwind edge escapes the loop,
then don't try to unswitch the loop. Doing so may cause the unwind edge to be
split, which not only is non-trivial but doesn't preserve loop simplify
information.
Fixes PR12573
llvm-svn: 154987
|
| |
|
|
|
|
| |
builtins a while back.
llvm-svn: 154985
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This introduces a threshold of 200 IV Users, which is very
conservative but should be sufficient to avoid serious compile time
sink or stack overflow. The llvm test-suite with LTO never exceeds 190
users per loop.
The bug doesn't relate to a specific type of loop. Checking in an
arbitrary giant loop as a unit test would be silly.
Fixes rdar://11262507.
llvm-svn: 154983
|
| |
|
|
| |
llvm-svn: 154971
|
| |
|
|
| |
llvm-svn: 154962
|
| |
|
|
|
|
| |
also fix SimplifyLibCalls to use TLI rather than compile-time conditionals to enable optimizations on floor, ceil, round, rint, and nearbyint
llvm-svn: 154960
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
transformation:
(X op C1) ^ C2 --> (X op C1) & ~C2 iff (C1&C2) == C2
should be done.
This change has been tested:
Using a debug+asserts build:
on the specific test case that brought this bug to light
make check-all
lnt nt
using this clang to build a release version of clang
Using the release+asserts clang-with-clang build:
on the specific test case that brought this bug to light
make check-all
lnt nt
Checking in because Evan wants it checked in. Test case forthcoming after
scrubbing.
llvm-svn: 154955
|
| |
|
|
| |
llvm-svn: 154953
|
| |
|
|
| |
llvm-svn: 154948
|
| |
|
|
| |
llvm-svn: 154944
|
| |
|
|
| |
llvm-svn: 154936
|
| |
|
|
|
|
| |
Patch by Vladimir Medic.
llvm-svn: 154935
|
| |
|
|
| |
llvm-svn: 154930
|
| |
|
|
| |
llvm-svn: 154921
|
| |
|
|
| |
llvm-svn: 154915
|
| |
|
|
|
|
|
|
| |
has NUW but not NSW."
This isn't right either, reverting for now.
llvm-svn: 154910
|
| |
|
|
|
|
| |
immediate is set.
llvm-svn: 154907
|
| |
|
|
|
|
|
|
|
|
| |
for the life of me remember why I wrote it this way, but I can't see any good
reason for it now. This patch replaces the custom linked list with an ilist.
This change should preserve the existing numberings exactly, so no generated code
should change (if it does, file a bug!).
llvm-svn: 154904
|
| |
|
|
|
|
|
| |
instructions with writebacks. And add test a case for all opcodes handed by
DecodeVLD2DupInstruction() in ARMDisassembler.cpp .
llvm-svn: 154884
|