llvm/lib/Target/Mips
Simon Dardis 652842ec9a [mips] Use register scavenging with MSA.
MSA stores and loads to the stack are more likely to require an
emergency GPR spill slot due to the smaller offsets available
with those instructions.

Handle this by overestimating the size of the stack by determining
the largest offset presuming that all callee save registers are
spilled and accounting of incoming arguments when determining
whether an emergency spill slot is required.

Reviewers: atanasyan

Differential Revision: https://reviews.llvm.org/D39056


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317204 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-02 12:47:22 +00:00
..
AsmParser [Asm] Add debug tracing in table-generated assembly matcher 2017-10-11 09:17:43 +00:00
Disassembler [mips] Place certain 64 bit FPU instructions in their own decoder namespace 2017-10-05 10:27:37 +00:00
InstPrinter
MCTargetDesc Revert "TargetMachine: Merge TargetMachine and LLVMTargetMachine" 2017-10-12 22:57:28 +00:00
TargetInfo
CMakeLists.txt
LLVMBuild.txt
MicroMips32r6InstrFormats.td
MicroMips32r6InstrInfo.td [mips] Place certain 64 bit FPU instructions in their own decoder namespace 2017-10-05 10:27:37 +00:00
MicroMips64r6InstrFormats.td
MicroMips64r6InstrInfo.td [mips] Implement the 'dext' aliases and it's disassembly alias. 2017-09-14 17:27:53 +00:00
MicroMipsDSPInstrFormats.td
MicroMipsDSPInstrInfo.td [mips] Enable spilling and reloading of the dsp register set. 2017-10-03 13:45:49 +00:00
MicroMipsInstrFormats.td [mips][micromips] Fix (dis)assembly of bc1(t|f) 2017-10-16 14:20:22 +00:00
MicroMipsInstrFPU.td [mips] Fix (dis)assembly of abs.fmt for micromips 2017-10-26 11:36:54 +00:00
MicroMipsInstrInfo.td [mips] Provide alternate predicates for constant synthesis 2017-10-16 13:18:21 +00:00
MicroMipsSizeReduction.cpp [mips][microMIPS] Extending size reduction pass with XOR16 2017-08-10 10:27:29 +00:00
Mips16FrameLowering.cpp Remove unused variables 2017-10-15 05:35:02 +00:00
Mips16FrameLowering.h Add "Restored" flag to CalleeSavedInfo 2017-08-10 16:17:32 +00:00
Mips16HardFloat.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
Mips16HardFloatInfo.cpp
Mips16HardFloatInfo.h
Mips16InstrFormats.td
Mips16InstrInfo.cpp Teach TargetInstrInfo::getInlineAsmLength to parse .space directives with integer arguments 2017-09-28 09:31:46 +00:00
Mips16InstrInfo.h Teach TargetInstrInfo::getInlineAsmLength to parse .space directives with integer arguments 2017-09-28 09:31:46 +00:00
Mips16InstrInfo.td
Mips16ISelDAGToDAG.cpp
Mips16ISelDAGToDAG.h
Mips16ISelLowering.cpp
Mips16ISelLowering.h
Mips16RegisterInfo.cpp
Mips16RegisterInfo.h
Mips32r6InstrFormats.td
Mips32r6InstrInfo.td [mips][microMIPS] add lapc instruction 2017-09-11 18:34:04 +00:00
Mips64InstrInfo.td [mips] Implement the 'dext' aliases and it's disassembly alias. 2017-09-14 17:27:53 +00:00
Mips64r6InstrInfo.td
Mips.h
Mips.td [mips] Handle the long-calls feature flags in the MIPS backend 2017-07-15 07:14:25 +00:00
MipsAnalyzeImmediate.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsAnalyzeImmediate.h [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsAsmPrinter.cpp [MC] Adding code padding for performance stability - infrastructure. NFC. 2017-10-24 06:16:03 +00:00
MipsAsmPrinter.h [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsCallingConv.td Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns" 2017-06-09 14:37:08 +00:00
MipsCCState.cpp Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns" 2017-06-09 14:37:08 +00:00
MipsCCState.h Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns" 2017-06-09 14:37:08 +00:00
MipsCondMov.td [mips] Place certain 64 bit FPU instructions in their own decoder namespace 2017-10-05 10:27:37 +00:00
MipsConstantIslandPass.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
MipsDelaySlotFiller.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td [mips] Enable spilling and reloading of the dsp register set. 2017-10-03 13:45:49 +00:00
MipsEVAInstrFormats.td
MipsEVAInstrInfo.td
MipsFastISel.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsFrameLowering.cpp [mips] Use register scavenging with MSA. 2017-11-02 12:47:22 +00:00
MipsFrameLowering.h
MipsHazardSchedule.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsInstrFormats.td
MipsInstrFPU.td [mips] Fix (dis)assembly of abs.fmt for micromips 2017-10-26 11:36:54 +00:00
MipsInstrInfo.cpp [mips] Fix PR35071 2017-10-26 10:58:36 +00:00
MipsInstrInfo.h [mips] Add support for parsing target specific flags for MIR 2017-10-11 11:11:35 +00:00
MipsInstrInfo.td [mips] Provide alternate predicates for constant synthesis 2017-10-16 13:18:21 +00:00
MipsISelDAGToDAG.cpp
MipsISelDAGToDAG.h
MipsISelLowering.cpp Revert "[mips] Reordering callseq* nodes to be linear" 2017-10-20 14:35:41 +00:00
MipsISelLowering.h Revert "[mips] Reordering callseq* nodes to be linear" 2017-10-20 14:35:41 +00:00
MipsLongBranch.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsMachineFunction.cpp evert "[mips] Fix test mips64fpldst.ll with machine verifier enabled" 2017-06-07 11:21:37 +00:00
MipsMachineFunction.h
MipsMCInstLower.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsMCInstLower.h [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsModuleISelDAGToDAG.cpp
MipsMSAInstrFormats.td
MipsMSAInstrInfo.td
MipsMTInstrFormats.td Revert "Reland "[mips][mt][6/7] Add support for mftr, mttr instructions."" 2017-08-14 16:20:33 +00:00
MipsMTInstrInfo.td Revert "Reland "[mips][mt][6/7] Add support for mftr, mttr instructions."" 2017-08-14 16:20:33 +00:00
MipsOptimizePICCall.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsOptionRecord.h
MipsOs16.cpp
MipsRegisterInfo.cpp [mips] Clean up some whitespace (NFC). 2017-10-25 13:35:53 +00:00
MipsRegisterInfo.h [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsRegisterInfo.td
MipsSchedule.td Revert "Reland "[mips][mt][6/7] Add support for mftr, mttr instructions."" 2017-08-14 16:20:33 +00:00
MipsScheduleGeneric.td Revert "Reland "[mips][mt][6/7] Add support for mftr, mttr instructions."" 2017-08-14 16:20:33 +00:00
MipsScheduleP5600.td [mips][mt][3/7] Add IAS support for emt, dmt instructions. 2017-07-12 11:57:44 +00:00
MipsSEFrameLowering.cpp [mips] Use register scavenging with MSA. 2017-11-02 12:47:22 +00:00
MipsSEFrameLowering.h [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsSEInstrInfo.cpp [mips] Enable spilling and reloading of the dsp register set. 2017-10-03 13:45:49 +00:00
MipsSEInstrInfo.h
MipsSEISelDAGToDAG.cpp [mips] Pick the right variant of DINS upfront and enable target instruction verification 2017-09-14 10:58:00 +00:00
MipsSEISelDAGToDAG.h Reland "[mips] Fix multiprecision arithmetic." 2017-07-13 11:28:05 +00:00
MipsSEISelLowering.cpp [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsSEISelLowering.h [Mips] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-03 22:12:30 +00:00
MipsSERegisterInfo.cpp
MipsSERegisterInfo.h
MipsSubtarget.cpp [MIPS] Implement support for -mstack-alignment. 2017-08-14 21:49:38 +00:00
MipsSubtarget.h [MIPS] Implement support for -mstack-alignment. 2017-08-14 21:49:38 +00:00
MipsTargetMachine.cpp Revert "TargetMachine: Merge TargetMachine and LLVMTargetMachine" 2017-10-12 22:57:28 +00:00
MipsTargetMachine.h Revert "TargetMachine: Merge TargetMachine and LLVMTargetMachine" 2017-10-12 22:57:28 +00:00
MipsTargetObjectFile.cpp [mips] Handle variables with an explicit section and interactions with .sdata, .sbss 2017-08-16 12:18:04 +00:00
MipsTargetObjectFile.h
MipsTargetStreamer.h [mips] implement .set dspr2 directive 2017-10-05 17:40:32 +00:00
MSA.txt
Relocation.txt