- Oct 28, 2012
-
-
Rafael Espindola authored
All the credit goes to Jan Voung for noticing it was dead! llvm-svn: 166902
-
Reed Kotler authored
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
-
- Oct 27, 2012
-
-
Jakob Stoklund Olesen authored
This fixes PR14194. llvm-svn: 166880
-
Benjamin Kramer authored
I don't think this is possible with the current implementation but that may change eventually. llvm-svn: 166877
-
Benjamin Kramer authored
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
-
Benjamin Kramer authored
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
-
Benjamin Kramer authored
SCEV validator: Ignore CouldNotCompute/undef on both sides. This is mostly noise and blocks finding more severe bugs. llvm-svn: 166873
-
Benjamin Kramer authored
llvm-svn: 166872
-
Chandler Carruth authored
offer up my email to the spam lords for it. Hopefully this will eventually be more automatic, but we don't want people to think there is only one option. llvm-svn: 166870
-
Hal Finkel authored
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
-
Nadav Rotem authored
1. Fix a bug in getTypeConversion. When a *simple* type is split, we need to 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
-
Quentin Colombet authored
llvm-svn: 166854
-
Reed Kotler authored
llvm-svn: 166852
-
Akira Hatanaka authored
arguments. This is rather conservative and should be fixed later to be more aggressive. llvm-svn: 166851
-
Akira Hatanaka authored
previous iteration. llvm-svn: 166850
-
Akira Hatanaka authored
LowerFormalArguments in MipsTargetLowering. No functionality change intended. llvm-svn: 166846
-
Akira Hatanaka authored
of vararg functions back to the stack. llvm-svn: 166844
-
Akira Hatanaka authored
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
-
Akira Hatanaka authored
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
-
Akira Hatanaka authored
arguments and inquire about calling convention information. llvm-svn: 166840
-
Akira Hatanaka authored
llvm-svn: 166837
-
Nadav Rotem authored
Refactor the VectorTargetTransformInfo interface. 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
-
Jakob Stoklund Olesen authored
Keep the integer_insertelement test case, the new coalescer can handle this kind of lane insertion without help from pseudo-instructions. llvm-svn: 166835
-
Kaelyn Uhrain authored
llvm-svn: 166834
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 166829
-
Jakob Stoklund Olesen authored
Don't pass it around everywhere as a function argument. llvm-svn: 166828
-
Reed Kotler authored
llvm-svn: 166827
-
Lang Hames authored
llvm-svn: 166822
-
Jordan Rose authored
llvm-svn: 166821
-
Jakob Stoklund Olesen authored
Don't pass it everywhere as an argument. llvm-svn: 166820
-
Chad Rosier authored
llvm-svn: 166819
-
- Oct 26, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 166818
-
Jakob Stoklund Olesen authored
It is just as easy to use MRI::isReserved() now. llvm-svn: 166817
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 166814
-
Jakob Stoklund Olesen authored
The new coalescer can already do all of this, so there is no need to duplicate the efforts. llvm-svn: 166813
-
Benjamin Kramer authored
It was unmaintained and not much more than a stub. The new DependenceAnalysis pass is both more general and complete. llvm-svn: 166810
-
Bill Wendling authored
llvm-svn: 166804
-
Derek Schuff authored
APInt::shl generated llvm.trap to guard against shifts greater than bit-width. This was already checked with an assert, and there was a special case for shifts equal to bit-width. Modify this check to catch shifts greater than or equal to bit-width, so llvm.trap isn't generated. Patch contributed by JF Bastien llvm-svn: 166803
-
Hal Finkel authored
llvm-svn: 166802
-