| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
wrapper returns a vector of integers when passed a vector of pointers) by having
getIntPtrType itself return a vector of integers in this case. Outside of this
wrapper, I didn't find anywhere in the codebase that was relying on the old
behaviour for vectors of pointers, so give this a whirl through the buildbots.
llvm-svn: 166939
|
| |
|
|
|
|
|
|
|
| |
We may need to change the way profile counter values are stored, but
saturation is the wrong thing to do. Just remove it for now.
Patch by Alastair Murray!
llvm-svn: 166938
|
| |
|
|
|
|
| |
-vectorize to -vectorize-loops because we dont want to share the same flag as the bb-vectorizer.
llvm-svn: 166937
|
| |
|
|
| |
llvm-svn: 166936
|
| |
|
|
| |
llvm-svn: 166935
|
| |
|
|
| |
llvm-svn: 166932
|
| |
|
|
| |
llvm-svn: 166931
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
incorrect instruction sequence due to it not being aware that an
inline assembly instruction may reference memory.
This patch fixes the problem by causing the scheduler to always assume that any
inline assembly code instruction could access memory. This is necessary because
the internal representation of the inline instruction does not include
any information about memory accesses.
This should fix PR13504.
llvm-svn: 166929
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ELF subtarget.
The existing logic is used as a fallback to avoid any changes to the Darwin
ABI. PPC64 ELF now has two possible data layout strings: one for FreeBSD,
which requires 8-byte alignment, and a default string that requires
16-byte alignment.
I've added a test for PPC64 Linux to verify the 16-byte alignment. If
somebody wants to add a separate test for FreeBSD, that would be great.
Note that there is a companion patch to update the alignment information
in Clang, which I am committing now as well.
llvm-svn: 166928
|
| |
|
|
|
|
| |
just call getPointerTypeSizeInBits. No functionality change.
llvm-svn: 166926
|
| |
|
|
| |
llvm-svn: 166922
|
| |
|
|
|
|
| |
Patch by Amara Emerson.
llvm-svn: 166919
|
| |
|
|
|
|
|
|
| |
Currently only implemented for ELF.
Patch by Amara Emerson.
llvm-svn: 166918
|
| |
|
|
|
|
|
|
|
|
| |
LLVM using cmake.
Get the number of registers by calling getTypeLegalizationCost.
PR14199.
llvm-svn: 166911
|
| |
|
|
| |
llvm-svn: 166910
|
| |
|
|
|
|
|
| |
split module can see each other. If it is keeping a symbol that already has
a non local linkage, it doesn't need to change it.
llvm-svn: 166908
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
output of both
llvm-extract foo.ll -func=bar
and
llvm-extract foo.ll -func=bar -delete
so the two new files could not be linked together anymore. With this change
alias are handled almost like functions and global variables. Almost because
with alias we cannot just clear the initializer/body, we have to create a new
declaration and replace the alias with it.
The net result is that now the output of the above commands can be linked
even if foo.ll has aliases.
llvm-svn: 166907
|
| |
|
|
| |
llvm-svn: 166903
|
| |
|
|
|
|
| |
All the credit goes to Jan Voung for noticing it was dead!
llvm-svn: 166902
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously mips16 was sharing the pattern addr which is used for mips32
and mips64. This had a number of problems:
1) Storing and loading byte and halfword quantities for mips16 has particular
problems due to the primarily non mips16 nature of SP. When we must
load/store byte/halfword stack objects in a function, we must create a mips16
alias register for SP. This functionality is tested in stchar.ll.
2) We need to have an FP register under certain conditions (such as
dynamically sized alloca). We use mips16 register S0 for this purpose.
In this case, we also use this register when accessing frame objects so this
issue also affects the complex pattern addr16. This functionality is
tested in alloca16.ll.
The Mips16InstrInfo.td has been updated to use addr16 instead of addr.
The complex pattern C++ function for addr has been copied to addr16 and
updated to reflect the above issues.
llvm-svn: 166897
|
| |
|
|
|
|
| |
This fixes PR14194.
llvm-svn: 166880
|
| |
|
|
|
|
| |
I don't think this is possible with the current implementation but that may change eventually.
llvm-svn: 166877
|
| |
|
|
|
|
|
|
|
|
|
| |
This turns loops like
for (unsigned i = 0; i != n; ++i)
p[i] = p[i+1];
into memmove, which has a highly optimized implementation in most libcs.
This was really easy with the new DependenceAnalysis :)
llvm-svn: 166875
|
| |
|
|
|
|
|
|
|
|
|
| |
Requires a lot less code and complexity on loop-idiom's side and the more
precise analysis can catch more cases, like the one I included as a test case.
This also fixes the edge-case miscompilation from PR9481.
Compile time performance seems to be slightly worse, but this is mostly due
to an extra LCSSA run scheduled by the PassManager and should be fixed there.
llvm-svn: 166874
|
| |
|
|
|
|
| |
noise and blocks finding more severe bugs.
llvm-svn: 166873
|
| |
|
|
|
|
| |
way it handles strings.
llvm-svn: 166872
|
| |
|
|
|
|
|
|
| |
The monolithic interface for instruction costs has been split into
several functions. This is the corresponding change. No functionality
change is intended.
llvm-svn: 166865
|
| |
|
|
|
|
|
|
|
| |
return the type of the split result.
2. Change the maximum vectorization width from 4 to 8.
3. A test for both.
llvm-svn: 166864
|
| |
|
|
|
|
| |
sequence
llvm-svn: 166854
|
| |
|
|
| |
llvm-svn: 166852
|
| |
|
|
|
|
|
|
| |
arguments.
This is rather conservative and should be fixed later to be more aggressive.
llvm-svn: 166851
|
| |
|
|
|
|
| |
previous iteration.
llvm-svn: 166850
|
| |
|
|
|
|
|
|
| |
LowerFormalArguments in MipsTargetLowering.
No functionality change intended.
llvm-svn: 166846
|
| |
|
|
|
|
| |
of vararg functions back to the stack.
llvm-svn: 166844
|
| |
|
|
|
|
|
|
| |
This method emits nodes for passing byval arguments in registers and stack.
This has the same functionality as existing functions PassByValArg64 and
WriteByValArg which will be deleted later.
llvm-svn: 166843
|
| |
|
|
|
|
|
|
| |
This method copies byval arguments passed in registers onto the stack and has
the same functionality as existing functions CopyMips64ByValRegs and
ReadByValArg which will be deleted later.
llvm-svn: 166841
|
| |
|
|
|
|
| |
arguments and inquire about calling convention information.
llvm-svn: 166840
|
| |
|
|
| |
llvm-svn: 166837
|
| |
|
|
|
|
|
|
|
|
| |
Add getCostXXX calls for different families of opcodes, such as casts, arithmetic, cmp, etc.
Port the LoopVectorizer to the new API.
The LoopVectorizer now finds instructions which will remain uniform after vectorization. It uses this information when calculating the cost of these instructions.
llvm-svn: 166836
|
| |
|
|
|
|
|
| |
Keep the integer_insertelement test case, the new coalescer can handle
this kind of lane insertion without help from pseudo-instructions.
llvm-svn: 166835
|
| |
|
|
| |
llvm-svn: 166834
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 166829
|
| |
|
|
|
|
| |
Don't pass it around everywhere as a function argument.
llvm-svn: 166828
|
| |
|
|
| |
llvm-svn: 166827
|
| |
|
|
|
|
| |
Don't pass it everywhere as an argument.
llvm-svn: 166820
|
| |
|
|
| |
llvm-svn: 166819
|
| |
|
|
| |
llvm-svn: 166818
|
| |
|
|
|
|
| |
It is just as easy to use MRI::isReserved() now.
llvm-svn: 166817
|
| |
|
|
|
|
|
|
|
| |
Some instructions in ARM require 2 even-odd paired GPRs. This
patch adds support for such register class.
Patch by Weiming Zhao!
llvm-svn: 166816
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 166814
|