llvm-6502/lib/Target/Mips
Hal Finkel dc3beb9017 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177774 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-22 23:32:27 +00:00
..
AsmParser This patch that enables the Mips assembler to use symbols for offset for instructions 2013-03-22 00:05:30 +00:00
Disassembler Remove the form field from Mips16 instruction formats and set things 2013-02-14 03:05:25 +00:00
InstPrinter This patch that sets the EmitAlias flag in td files 2013-02-05 08:32:10 +00:00
MCTargetDesc Fix the invalid opcode for Mips branch instructions in the assembler 2013-03-22 00:29:10 +00:00
TargetInfo
CMakeLists.txt Add back lines which were accidentally deleted in CMakeLists.txt. 2013-03-14 18:46:46 +00:00
LLVMBuild.txt
Makefile
Mips16FrameLowering.cpp Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
Mips16FrameLowering.h Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
Mips16InstrFormats.td Remove the form field from Mips16 instruction formats and set things 2013-02-14 03:05:25 +00:00
Mips16InstrInfo.cpp Make pseudos FEXT_CCRX16_ins and FEXT_CCRXI16_ins into custom emitters. 2013-02-25 02:25:47 +00:00
Mips16InstrInfo.h Make pseudos FEXT_CCRX16_ins and FEXT_CCRXI16_ins into custom emitters. 2013-02-25 02:25:47 +00:00
Mips16InstrInfo.td [mips] Rename functions and variables to start with proper case. 2013-03-14 18:33:23 +00:00
Mips16ISelDAGToDAG.cpp [mips] Rename functions and variables to start with proper case. 2013-03-14 18:33:23 +00:00
Mips16ISelDAGToDAG.h [mips] Rename functions and variables to start with proper case. 2013-03-14 18:33:23 +00:00
Mips16ISelLowering.cpp Add a new method which enables one to change register classes. 2013-03-14 22:02:09 +00:00
Mips16ISelLowering.h [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
Mips16RegisterInfo.cpp Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
Mips16RegisterInfo.h Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
Mips64InstrInfo.td [mips] Print move instructions. 2013-03-04 22:25:01 +00:00
Mips.h Add the skeleton for the Mips constant island pass. 2013-02-27 03:33:58 +00:00
Mips.td [mips] Remove android calling convention. 2013-03-05 23:22:30 +00:00
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp ELF symbol table field st_other support, 2013-02-19 22:04:37 +00:00
MipsAsmPrinter.h
MipsCallingConv.td [mips] Remove android calling convention. 2013-03-05 23:22:30 +00:00
MipsCodeEmitter.cpp [mips] Expand pseudo instructions before they are emitted in 2013-02-11 22:35:40 +00:00
MipsCondMov.td [mips] Fix inefficient code generation. 2013-03-01 21:52:08 +00:00
MipsConstantIslandPass.cpp Fix cut/paste error in a comment. 2013-02-27 04:20:14 +00:00
MipsDelaySlotFiller.cpp [mips] Remove unused option. Fix 80-column violations. 2013-03-01 02:17:02 +00:00
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td
MipsFrameLowering.cpp
MipsFrameLowering.h [mips] Rename function and variable names to start with proper case. Fix typos. 2013-03-12 00:16:36 +00:00
MipsInstrFormats.td [mips] Add definition of JALR instruction which has two register operands. Change the 2013-02-07 19:48:00 +00:00
MipsInstrFPU.td [mips] Split SelectAddr, which was used to match address patterns, into two 2013-02-15 21:20:45 +00:00
MipsInstrInfo.cpp [mips] Do not add SecondLastInst to list BranchInstrs if there is only one 2013-03-01 01:22:26 +00:00
MipsInstrInfo.h [mips] Define an overloaded version of function MipsInstrInfo::AnalyzeBranchAdd. 2013-03-01 01:10:17 +00:00
MipsInstrInfo.td This patch that enables the Mips assembler to use symbols for offset for instructions 2013-03-22 00:05:30 +00:00
MipsISelDAGToDAG.cpp Remove some unused variables to clean the Clang -Werror build 2013-03-14 23:11:07 +00:00
MipsISelDAGToDAG.h [mips] Rename functions and variables to start with proper case. 2013-03-14 18:33:23 +00:00
MipsISelLowering.cpp [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
MipsISelLowering.h [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
MipsJITInfo.cpp
MipsJITInfo.h
MipsLongBranch.cpp
MipsMachineFunction.cpp [mips] Lower EH_RETURN. 2013-01-30 00:26:49 +00:00
MipsMachineFunction.h [mips] Lower EH_RETURN. 2013-01-30 00:26:49 +00:00
MipsMCInstLower.cpp
MipsMCInstLower.h
MipsRegisterInfo.cpp [PEI] Pass the frame index operand number to the eliminateFrameIndex function. 2013-01-31 20:02:54 +00:00
MipsRegisterInfo.h Provide the register scavenger to processFunctionBeforeFrameFinalized 2013-03-14 20:33:40 +00:00
MipsRegisterInfo.td [mips] Set isAllocatable bit of unallocatable register classes to 0. 2013-03-14 23:09:19 +00:00
MipsRelocations.h
MipsSchedule.td
MipsSEFrameLowering.cpp Allow the register scavenger to spill multiple registers 2013-03-22 23:32:27 +00:00
MipsSEFrameLowering.h Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
MipsSEInstrInfo.cpp [mips] Lower EH_RETURN. 2013-01-30 00:26:49 +00:00
MipsSEInstrInfo.h [mips] Lower EH_RETURN. 2013-01-30 00:26:49 +00:00
MipsSEISelDAGToDAG.cpp [mips] Define function MipsSEDAGToDAGISel::selectAddESubE. 2013-03-14 18:39:25 +00:00
MipsSEISelDAGToDAG.h [mips] Define function MipsSEDAGToDAGISel::selectAddESubE. 2013-03-14 18:39:25 +00:00
MipsSEISelLowering.cpp [mips] Fix filename in comment and delete unnecessary lines of code. 2013-03-14 19:09:52 +00:00
MipsSEISelLowering.h [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
MipsSelectionDAGInfo.cpp
MipsSelectionDAGInfo.h
MipsSERegisterInfo.cpp Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
MipsSERegisterInfo.h Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo 2013-02-21 20:05:00 +00:00
MipsSubtarget.cpp [mips] Remove android calling convention. 2013-03-05 23:22:30 +00:00
MipsSubtarget.h [mips] Remove android calling convention. 2013-03-05 23:22:30 +00:00
MipsTargetMachine.cpp [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
MipsTargetMachine.h [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
MipsTargetObjectFile.cpp
MipsTargetObjectFile.h