#
9e331c2f |
| 22-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Allow the register scavenger to spill multiple registers
This patch lets the register scavenger make use of multiple spill slots in order to guarantee that it will be able to provide multiple regist
Allow the register scavenger to spill multiple registers
This patch lets the register scavenger make use of multiple spill slots in order to guarantee that it will be able to provide multiple registers simultaneously.
To support this, the RS's API has changed slightly: setScavengingFrameIndex / getScavengingFrameIndex have been replaced by addScavengingFrameIndex / isScavengingFrameIndex / getScavengingFrameIndices.
In forthcoming commits, the PowerPC backend will use this capability in order to implement the spilling of condition registers, and some special-purpose registers, without relying on r0 being reserved. In some cases, spilling these registers requires two GPRs: one for addressing and one to hold the value being transferred.
llvm-svn: 177774
show more ...
|
#
628ba128 |
| 14-Mar-2013 |
Hal Finkel <hfinkel@anl.gov> |
Move estimateStackSize from ARM into MachineFrameInfo
This is a generic function (derived from PEI); moving it into MachineFrameInfo eliminates a current redundancy between the ARM and AArch64 backe
Move estimateStackSize from ARM into MachineFrameInfo
This is a generic function (derived from PEI); moving it into MachineFrameInfo eliminates a current redundancy between the ARM and AArch64 backends, and will allow it to be used by the PowerPC target code.
No functionality change intended.
llvm-svn: 177111
show more ...
|
#
8da87163 |
| 21-Feb-2013 |
Eli Bendersky <eliben@google.com> |
Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo to TargetFrameLowering, where it belongs. Incidentally, this allows us to delete some duplicated (and slightly different!) code i
Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo to TargetFrameLowering, where it belongs. Incidentally, this allows us to delete some duplicated (and slightly different!) code in TRI.
There are potentially other layering problems that can be cleaned up as a result, or in a similar manner.
The refactoring was OK'd by Anton Korobeynikov on llvmdev.
Note: this touches the target interfaces, so out-of-tree targets may be affected.
llvm-svn: 175788
show more ...
|
#
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 ...
|
#
698e84fc |
| 30-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the Function::getFnAttributes method in favor of using the AttributeSet directly.
This is in preparation for removing the use of the 'Attribute' class as a collection of attributes. That will
Remove the Function::getFnAttributes method in favor of using the AttributeSet directly.
This is in preparation for removing the use of the 'Attribute' class as a collection of attributes. That will shift to the AttributeSet class instead.
llvm-svn: 171253
show more ...
|
#
a229186a |
| 21-Dec-2012 |
Roman Divacky <rdivacky@freebsd.org> |
Remove duplicate includes.
llvm-svn: 170902
|
#
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 |
|
#
3d7b0b8a |
| 19-Dec-2012 |
Bill Wendling <isanbard@gmail.com> |
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.
llvm-svn: 170502
|
Revision tags: 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 |
|
#
271fbb64 |
| 26-Oct-2012 |
Kaelyn Uhrain <rikka@google.com> |
Avoid an unused-variable warning when asserts are disabled.
llvm-svn: 166834
|
#
e3801831 |
| 26-Oct-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
80 col.
llvm-svn: 166818
|
#
410eae51 |
| 26-Oct-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove ARMBaseRegisterInfo::isReservedReg().
It is just as easy to use MRI::isReserved() now.
llvm-svn: 166817
|
#
07364426 |
| 17-Oct-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Merge MRI::isPhysRegOrOverlapUsed() into isPhysRegUsed().
All callers of these functions really want the isPhysRegOrOverlapUsed() functionality which also checks aliases. For historical reasons, tar
Merge MRI::isPhysRegOrOverlapUsed() into isPhysRegUsed().
All callers of these functions really want the isPhysRegOrOverlapUsed() functionality which also checks aliases. For historical reasons, targets without register aliases were calling isPhysRegUsed() instead.
Change isPhysRegUsed() to also check aliases, and switch all isPhysRegOrOverlapUsed() callers to isPhysRegUsed().
llvm-svn: 166117
show more ...
|
#
c9b22d73 |
| 09-Oct-2012 |
Bill Wendling <isanbard@gmail.com> |
Create enums for the different attributes.
We use the enums to query whether an Attributes object has that attribute. The opaque layer is responsible for knowing where that specific attribute is sto
Create enums for the different attributes.
We use the enums to query whether an Attributes object has that attribute. The opaque layer is responsible for knowing where that specific attribute is stored.
llvm-svn: 165488
show more ...
|
#
863bab68 |
| 26-Sep-2012 |
Bill Wendling <isanbard@gmail.com> |
Remove the `hasFnAttr' method from Function.
The hasFnAttr method has been replaced by querying the Attributes explicitly. No intended functionality change.
llvm-svn: 164725
|
#
b3322364 |
| 03-Aug-2012 |
Eric Christopher <echristo@apple.com> |
Add support for the ARM GHC calling convention, this patch was in 3.0, but somehow managed to be dropped later.
Patch by Karel Gardas.
llvm-svn: 161226
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2 |
|
#
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 |
|
#
b4bd3880 |
| 06-Apr-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Eliminate iOS-specific tail call instructions.
After register masks were introdruced to represent the call clobbers, it is no longer necessary to have duplicate instruction for iOS.
llvm-svn: 154209
|
#
ca690320 |
| 20-Mar-2012 |
Bob Wilson <bob.wilson@apple.com> |
Remove some redundant checks.
ARMFrameLowering::hasReservedCallFrame is already checking for variable sized objects, so there's no point in checking it twice.
llvm-svn: 153109
|
#
c988e0c5 |
| 05-Mar-2012 |
Jim Grosbach <grosbach@apple.com> |
ARM refactor away a bunch of VLD/VST pseudo instructions.
With the new composite physical registers to represent arbitrary pairs of DPR registers, we don't need the pseudo-registers anymore. Get rid
ARM refactor away a bunch of VLD/VST pseudo instructions.
With the new composite physical registers to represent arbitrary pairs of DPR registers, we don't need the pseudo-registers anymore. Get rid of a bunch of them that use DPR register pairs and just use the real instructions directly instead.
llvm-svn: 152045
show more ...
|
#
420525ce |
| 04-Mar-2012 |
Craig Topper <craig.topper@gmail.com> |
Use uint16_t to store registers in callee saved register tables to reduce size of static data.
llvm-svn: 151996
|
#
92c15b2b |
| 28-Feb-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Enable ARM base pointer when calling functions with large arguments.
When an outgoing call takes more than 2k of arguments on the stack, we don't allocate that call frame in the prolog, but adjust t
Enable ARM base pointer when calling functions with large arguments.
When an outgoing call takes more than 2k of arguments on the stack, we don't allocate that call frame in the prolog, but adjust the stack pointer immediately before the call instead.
This causes problems with the emergency spill slot because PEI can't track stack pointer adjustments on the second pass, and if the outgoing arguments are too big, SP can't be used to reach the emergency spill slot at all.
Work around these problems by ensuring there is a base or frame pointer that can be used to access the emergency spill slot.
<rdar://problem/10917166>
llvm-svn: 151604
show more ...
|
#
9fceb901 |
| 24-Feb-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Remove unused cl::opt, make another opt static.
llvm-svn: 151398
|
#
b22310fd |
| 18-Feb-2012 |
Jia Liu <proljc@gmail.com> |
Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore.
llvm-svn: 150878
|
#
68a922c0 |
| 06-Jan-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Enable aligned NEON spilling by default.
Experiments show this to be a small speedup for modern ARM cores.
llvm-svn: 147689
|