#
d7e8d926 |
| 04-Sep-2013 |
Arnold Schwaighofer <aschwaighofer@apple.com> |
Swift: Only build vldm/vstm with q register aligned register lists
Unaligned vldm/vstm need more uops and therefore are slower in general on swift.
radar://14522102
llvm-svn: 189961
|
#
b94011fd |
| 14-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.
llvm-svn: 186274
|
#
9ae47078 |
| 10-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Simplify code.
llvm-svn: 186013
|
Revision tags: llvmorg-3.3.1-rc1 |
|
#
af0dea13 |
| 04-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.
llvm-svn: 185606
|
#
663150f6 |
| 20-Jun-2013 |
Quentin Colombet <qcolombet@apple.com> |
ARM: Remove a (false) dependency on the memoryoperand's value as we do not use it at the moment. This allows to form more paired loads even when stack coloring pass destroys the memoryoperand's value
ARM: Remove a (false) dependency on the memoryoperand's value as we do not use it at the moment. This allows to form more paired loads even when stack coloring pass destroys the memoryoperand's value.
<rdar://problem/13978317>
llvm-svn: 184492
show more ...
|
Revision tags: llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1 |
|
#
a2ff6986 |
| 18-Apr-2013 |
Hao Liu <Hao.Liu@arm.com> |
Fix for PR14824, An ARM Load/Store Optimization bug
llvm-svn: 179751
|
#
91de828f |
| 05-Apr-2013 |
Renato Golin <renato.golin@linaro.org> |
Reverting 178851 as it broke buildbots
llvm-svn: 178883
|
#
6b53a2f5 |
| 05-Apr-2013 |
Stepan Dyatkovskiy <stpworld@narod.ru> |
Buildbot fix for r178851: mistake was in wrong TargetRegisterInfo::getRegClass usage.
llvm-svn: 178854
|
#
b309b3b3 |
| 05-Apr-2013 |
Stepan Dyatkovskiy <stpworld@narod.ru> |
Fix for PR14824: "Optimization arm_ldst_opt inserts newly generated instruction vldmia at incorrect position". Patch introduces memory operands tracking in ARMLoadStoreOpt::LoadStoreMultipleOpti. For
Fix for PR14824: "Optimization arm_ldst_opt inserts newly generated instruction vldmia at incorrect position". Patch introduces memory operands tracking in ARMLoadStoreOpt::LoadStoreMultipleOpti. For each register it keeps the order of load operations as it was before optimization pass. It is kind of deep improvement of fix proposed by Hao: http://llvm.org/bugs/show_bug.cgi?id=14824#c4 But it also tracks conflicts between different register classes (e.g. D2 and S5). For more details see: Bug description: http://llvm.org/bugs/show_bug.cgi?id=14824 LLVM Commits discussion: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130311/167936.html http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130318/168688.html http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130325/169376.html http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130401/170238.html
llvm-svn: 178851
show more ...
|
#
ace9c5df |
| 25-Mar-2013 |
Chad Rosier <mcrosier@apple.com> |
[arm load/store optimizer] When trying to merge a base update load/store, make sure the base register and would-be writeback register don't conflict for stores. This was already being done for loads
[arm load/store optimizer] When trying to merge a base update load/store, make sure the base register and would-be writeback register don't conflict for stores. This was already being done for loads.
Unfortunately, it is rather difficult to create a test case for this issue. It was exposed in 450.soplex at LTO and requires unlucky register allocation. <rdar://13394908>
llvm-svn: 177874
show more ...
|
#
ab28b9ae |
| 21-Feb-2013 |
Evan Cheng <evan.cheng@apple.com> |
Radar numbers don't belong in source code.
llvm-svn: 175775
|
#
9fb823bb |
| 02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier.
The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366
show more ...
|
#
33f5d149 |
| 20-Dec-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add an MF argument to MI::copyImplicitOps().
This function is often used to decorate dangling instructions, so a context reference is required to allocate memory for the operands.
Also add a corres
Add an MF argument to MI::copyImplicitOps().
This function is often used to decorate dangling instructions, so a context reference is required to allocate memory for the operands.
Also add a corresponding MachineInstrBuilder method.
llvm-svn: 170797
show more ...
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3 |
|
#
ed0881b2 |
| 03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib.
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module
Use the new script to sort the includes of every file under lib.
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented.
Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =]
llvm-svn: 169131
show more ...
|
Revision tags: llvmorg-3.2.0-rc2, llvmorg-3.2.0-rc1 |
|
#
cdfe20b9 |
| 08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout.
llvm-svn: 165402
|
#
6ac277ce |
| 09-Aug-2012 |
Eric Christopher <echristo@apple.com> |
Remove getARMRegisterNumbering and replace with calls into the register info for getEncodingValue. This builds on the small patch of yesterday to set HWEncoding in the register file.
One (deprecated
Remove getARMRegisterNumbering and replace with calls into the register info for getEncodingValue. This builds on the small patch of yesterday to set HWEncoding in the register file.
One (deprecated) use was turned into a hard number to avoid needing register info in the old JIT.
llvm-svn: 161628
show more ...
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3 |
|
#
3c52f028 |
| 07-May-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass().
The getPointerRegClass() hook can return register classes that depend on the calling convention of the current function (ptr_r
Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass().
The getPointerRegClass() hook can return register classes that depend on the calling convention of the current function (ptr_rc_tailcall).
So far, we have been able to infer the calling convention from the subtarget alone, but as we add support for multiple calling conventions per target, that no longer works.
Patch by Yiannis Tsiouris!
llvm-svn: 156328
show more ...
|
Revision tags: llvmorg-3.1.0-rc2 |
|
#
1e75fc1f |
| 24-Apr-2012 |
Jim Grosbach <grosbach@apple.com> |
ARM: Nuke remnant bogus code.
r154362 was supposed to delete this bit, but obviously didn't.
rdar://11305594
llvm-svn: 155465
|
#
c7242e05 |
| 20-Apr-2012 |
Craig Topper <craig.topper@gmail.com> |
Convert more uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent.
llvm-svn: 155188
|
Revision tags: llvmorg-3.1.0-rc1 |
|
#
8f99bc3a |
| 10-Apr-2012 |
Jim Grosbach <grosbach@apple.com> |
ARM LDR/LDRT has the same encoding collision as STR/STRT.
Generalized logic of r154141.
llvm-svn: 154362
|
#
d6a1a1dc |
| 05-Apr-2012 |
Jim Grosbach <grosbach@apple.com> |
ARM: Don't form a t2LDRi8 or t2STRi8 with an offset of zero.
The load/store optimizer splits LDRD/STRD into two instructions when the register pairing doesn't work out. For negative offsets in Thumb
ARM: Don't form a t2LDRi8 or t2STRi8 with an offset of zero.
The load/store optimizer splits LDRD/STRD into two instructions when the register pairing doesn't work out. For negative offsets in Thumb2, it uses t2STRi8 to do that. That's fine, except for the case when the offset is in the range [-4,-1]. In that case, we'll also form a second t2STRi8 with the original offset plus 4, resulting in a t2STRi8 with a non-negative offset, which ends up as if it were an STRT, which is completely bogus. Similarly for loads.
No testcase, unfortunately, as any I've been able to construct is both large and extremely fragile.
rdar://11193937
llvm-svn: 154141
show more ...
|
#
b6a7a892 |
| 28-Mar-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't kill the base register when expanding strd.
When an strd instruction doesn't get the registers it wants, it can be expanded into two str instructions. Make sure the first str doesn't kill the
Don't kill the base register when expanding strd.
When an strd instruction doesn't get the registers it wants, it can be expanded into two str instructions. Make sure the first str doesn't kill the base register in the case where the base and data registers are identical:
t2STRi12 %R0<kill>, %R0, 4, pred:14, pred:%noreg t2STRi12 %R2<kill>, %R0, 8, pred:14, pred:%noreg
<rdar://problem/11101911>
llvm-svn: 153611
show more ...
|
#
cdee326a |
| 28-Mar-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Preserve implicit defs in ARMLoadStoreOptimizer.
When a number of sub-register VLRDS instructions are combined into a VLDM, preserve any super-register implicit defs. This is required to keep the re
Preserve implicit defs in ARMLoadStoreOptimizer.
When a number of sub-register VLRDS instructions are combined into a VLDM, preserve any super-register implicit defs. This is required to keep the register scavenger and machine code verifier happy.
Enable machine code verification after ARMLoadStoreOptimizer. ARM/2012-01-26-CopyPropKills.ll was failing because of this.
llvm-svn: 153610
show more ...
|
#
8cb97523 |
| 28-Mar-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert r153516: "Invalidate liveness in Thumb2ITBlockPass." Revert r153519: "ARMLoadStoreOptimizer invalidates register liveness."
These patches caused miscompilations in povray by turning off branc
Revert r153516: "Invalidate liveness in Thumb2ITBlockPass." Revert r153519: "ARMLoadStoreOptimizer invalidates register liveness."
These patches caused miscompilations in povray by turning off branch folding's updating of live-in lists.
It turns out the the late scheduler depends on the live-in lists, even if it doesn't need correct kill flags.
<rdar://problem/11139228>
llvm-svn: 153593
show more ...
|
#
4acbcb31 |
| 27-Mar-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
ARMLoadStoreOptimizer invalidates register liveness.
This pass tries to update kill flags, but there are still many bugs. Passes after the load/store optimizer don't need accurate liveness, so don't
ARMLoadStoreOptimizer invalidates register liveness.
This pass tries to update kill flags, but there are still many bugs. Passes after the load/store optimizer don't need accurate liveness, so don't even try.
<rdar://problem/11101911>
llvm-svn: 153519
show more ...
|