llvm-project/llvm/lib/Target/Mips
Vasileios Kalintiris bb698c7d5f [mips] Add support for dynamic stack realignment.
Summary:
With this change we are able to realign the stack dynamically, whenever it
contains objects with alignment requirements that are larger than the
alignment specified from the given ABI.

We have to use the $fp register as the frame pointer when we perform
dynamic stack realignment. In complex stack frames, with variably-sized
objects, we reserve additionally the callee-saved register $s7 as the
base pointer in order to reference locals.

Reviewers: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8633

llvm-svn: 238829
2015-06-02 13:14:46 +00:00
..
AsmParser [mips] [IAS] Add support for the .set softfloat/hardfloat directives. 2015-06-02 09:48:04 +00:00
Disassembler [mips] Add new format for dmtc2/dmfc2 for Octeon CPUs. 2015-05-28 16:23:16 +00:00
InstPrinter [MCInstPrinter] Enable MCInstPrinter to change its behavior based on the 2015-03-27 20:36:02 +00:00
MCTargetDesc [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
TargetInfo [Mips64] Add support for MCJIT for MIPS64r2 and MIPS64r6 2015-05-28 13:48:41 +00:00
CMakeLists.txt MipsABIInfo class is used in different libraries. Moving the files to MCTargetDesc folder(LLVMMipsDesc library) prevents linkage errors. There are no functional changes. 2014-12-17 11:49:56 +00:00
LLVMBuild.txt Prune redundant libdeps. 2014-07-24 11:45:27 +00:00
MSA.txt Revert r221048 - Test commit 2014-11-01 16:08:03 +00:00
Makefile Reinstate "Nuke the old JIT." 2014-09-02 22:28:02 +00:00
MicroMips32r6InstrFormats.td [mips][microMIPSr6] Implement SEB and SEH instructions 2015-05-27 15:39:47 +00:00
MicroMips32r6InstrInfo.td [mips][microMIPSr6] Implement SEB and SEH instructions 2015-05-27 15:39:47 +00:00
MicroMipsInstrFPU.td [mips] Only use FGR_{32,64} in TableGen descriptions. NFC. 2015-05-08 12:15:04 +00:00
MicroMipsInstrFormats.td [mips][microMIPS] Implement movep instruction 2015-02-10 16:36:20 +00:00
MicroMipsInstrInfo.td [mips][microMIPS] Make usage of NOT16 by code generator 2015-03-11 20:28:31 +00:00
Mips.h [mips] Remove trivial header for the MipsModuleISelDAGToDAG pass. NFC. 2015-03-14 09:20:52 +00:00
Mips.td [mips] Add the SoftFloat MipsSubtarget feature. 2015-05-07 10:29:52 +00:00
Mips16FrameLowering.cpp [ShrinkWrap] Add (a simplified version) of shrink-wrapping. 2015-05-05 17:38:16 +00:00
Mips16FrameLowering.h [ShrinkWrap] Add (a simplified version) of shrink-wrapping. 2015-05-05 17:38:16 +00:00
Mips16HardFloat.cpp Purge unused includes throughout libSupport. 2015-03-23 18:07:13 +00:00
Mips16HardFloatInfo.cpp
Mips16HardFloatInfo.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
Mips16ISelDAGToDAG.cpp Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes" 2015-04-28 14:05:47 +00:00
Mips16ISelDAGToDAG.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
Mips16ISelLowering.cpp Rename the MIPS routine abiUsesSoftFloat -> useSoftFloat to match 2015-05-07 23:10:21 +00:00
Mips16ISelLowering.h Re-commit r221056 and others with fix, "[mips] Move F128 argument handling into MipsCCState as we did for returns. NFC." 2014-11-02 16:09:29 +00:00
Mips16InstrFormats.td Fix a whole bunch of binary literals which were the wrong size. All were being silently zero extended to the correct width. 2014-08-07 05:46:54 +00:00
Mips16InstrInfo.cpp [mips] Make sure that we don't adjust the stack pointer by zero amount. 2015-04-02 10:14:54 +00:00
Mips16InstrInfo.h [mips] Expose adjustStackPtr() from MipsInstrInfo. NFC. 2015-04-02 10:42:44 +00:00
Mips16InstrInfo.td Replace neverHasSideEffects=1 with hasSideEffects=0 in all .td files. 2014-11-26 00:46:26 +00:00
Mips16RegisterInfo.cpp Remove the need to cache the subtarget in the Mips TargetRegisterInfo 2015-03-12 05:43:57 +00:00
Mips16RegisterInfo.h Remove the need to cache the subtarget in the Mips TargetRegisterInfo 2015-03-12 05:43:57 +00:00
Mips32r6InstrFormats.td [mips][microMIPSr6] Implement initial mapping support 2015-04-20 12:42:08 +00:00
Mips32r6InstrInfo.td [mips][microMIPSr6] Implement BEQZALC, BGEZALC, BGTZALC, BLEZALC, BLTZALC and BNEZALC instructions 2015-05-27 14:19:22 +00:00
Mips64InstrInfo.td [mips] Add new format for dmtc2/dmfc2 for Octeon CPUs. 2015-05-28 16:23:16 +00:00
Mips64r6InstrInfo.td [mips] Fix two patterns that select i32's (for MIPS32r6) / i64's (for MIPS64r6) 2014-07-22 13:36:02 +00:00
MipsAnalyzeImmediate.cpp Remove unnecessary copying or replace it with moves in a bunch of places. 2014-10-04 16:55:56 +00:00
MipsAnalyzeImmediate.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
MipsAsmPrinter.cpp Create a MCSymbolELF. 2015-06-02 00:25:12 +00:00
MipsAsmPrinter.h [mips] Emit the .insn directive for empty basic blocks. 2015-05-08 09:10:15 +00:00
MipsCCState.cpp AArch64: Safely handle the incoming sret call argument. 2015-02-16 18:10:47 +00:00
MipsCCState.h Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
MipsCallingConv.td Rename the MIPS routine abiUsesSoftFloat -> useSoftFloat to match 2015-05-07 23:10:21 +00:00
MipsCondMov.td [mips] Add the SoftFloat MipsSubtarget feature. 2015-05-07 10:29:52 +00:00
MipsConstantIslandPass.cpp Remove most of the TargetMachine::getSubtarget/getSubtargetImpl 2015-01-29 23:27:36 +00:00
MipsDSPInstrFormats.td Make it possible for the Subtarget to change between function 2014-07-10 17:26:51 +00:00
MipsDSPInstrInfo.td
MipsDelaySlotFiller.cpp [mips] Do not place users of $ra in the delay slot of call instructions. 2015-05-14 13:17:56 +00:00
MipsFastISel.cpp [mips][FastISel] Implement bswap. 2015-06-01 16:40:45 +00:00
MipsFrameLowering.cpp [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsFrameLowering.h [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsISelDAGToDAG.cpp [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
MipsISelDAGToDAG.h [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
MipsISelLowering.cpp Add address space argument to isLegalAddressingMode 2015-06-01 05:31:59 +00:00
MipsISelLowering.h Add address space argument to isLegalAddressingMode 2015-06-01 05:31:59 +00:00
MipsInstrFPU.td [mips] Only use FGR_{32,64} in TableGen descriptions. NFC. 2015-05-08 12:15:04 +00:00
MipsInstrFormats.td [mips] Add new format for dmtc2/dmfc2 for Octeon CPUs. 2015-05-28 16:23:16 +00:00
MipsInstrInfo.cpp Update include - this class doesn't use the target machine, but 2015-01-08 18:18:54 +00:00
MipsInstrInfo.h [mips] Expose adjustStackPtr() from MipsInstrInfo. NFC. 2015-04-02 10:42:44 +00:00
MipsInstrInfo.td [mips][microMIPSr6] Implement SEB and SEH instructions 2015-05-27 15:39:47 +00:00
MipsLongBranch.cpp Remove most of the TargetMachine::getSubtarget/getSubtargetImpl 2015-01-29 23:27:36 +00:00
MipsMCInstLower.cpp MC: Clean up MCExpr naming. NFC. 2015-05-30 01:25:56 +00:00
MipsMCInstLower.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
MipsMSAInstrFormats.td Make it possible for the Subtarget to change between function 2014-07-10 17:26:51 +00:00
MipsMSAInstrInfo.td [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
MipsMachineFunction.cpp [Mips] Use unique_ptr to manage ownership. 2015-04-16 12:43:33 +00:00
MipsMachineFunction.h [Mips] Use unique_ptr to manage ownership. 2015-04-16 12:43:33 +00:00
MipsModuleISelDAGToDAG.cpp Purge unused includes throughout libSupport. 2015-03-23 18:07:13 +00:00
MipsOptimizePICCall.cpp Remove most of the TargetMachine::getSubtarget/getSubtargetImpl 2015-01-29 23:27:36 +00:00
MipsOptionRecord.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MipsOs16.cpp Re-sort includes with sort-includes.py and insert raw_ostream.h where it's used. 2015-03-23 19:32:43 +00:00
MipsRegisterInfo.cpp [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsRegisterInfo.h [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsRegisterInfo.td [mips] Honour -mno-odd-spreg for vector insert/extract when MSA is enabled. 2015-02-23 17:22:16 +00:00
MipsSEFrameLowering.cpp [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsSEFrameLowering.h [ShrinkWrap] Add (a simplified version) of shrink-wrapping. 2015-05-05 17:38:16 +00:00
MipsSEISelDAGToDAG.cpp [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
MipsSEISelDAGToDAG.h [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
MipsSEISelLowering.cpp [mips] Correct and improve special-case shuffle instructions. 2015-05-19 12:24:52 +00:00
MipsSEISelLowering.h Re-commit r221056 and others with fix, "[mips] Move F128 argument handling into MipsCCState as we did for returns. NFC." 2014-11-02 16:09:29 +00:00
MipsSEInstrInfo.cpp [mips] Move ABI-dependent register selections to MipsABIInfo. NFC. 2015-04-17 09:50:21 +00:00
MipsSEInstrInfo.h [mips] Expose adjustStackPtr() from MipsInstrInfo. NFC. 2015-04-02 10:42:44 +00:00
MipsSERegisterInfo.cpp [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsSERegisterInfo.h Remove the need to cache the subtarget in the Mips TargetRegisterInfo 2015-03-12 05:43:57 +00:00
MipsSchedule.td [mips] Add itineraries for ext and ins instructions. 2015-03-18 06:28:38 +00:00
MipsSelectionDAGInfo.cpp Have MipsSelectionDAGInfo constructor take a DataLayout rather 2014-06-27 04:38:30 +00:00
MipsSelectionDAGInfo.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
MipsSubtarget.cpp [mips] Add the SoftFloat MipsSubtarget feature. 2015-05-07 10:29:52 +00:00
MipsSubtarget.h InMips16HardFloat was only being set conditional on whether or 2015-05-07 23:10:23 +00:00
MipsTargetMachine.cpp Revert r237789 - [mips] The naming convention for private labels is ABI dependant. 2015-05-20 14:18:59 +00:00
MipsTargetMachine.h Remove the target independent TargetMachine::getSubtarget and 2015-03-21 04:22:23 +00:00
MipsTargetObjectFile.cpp Revert r238190 and r238197: [mips] Make TTypeEncoding indirect to allow .eh_frame to be read-only. 2015-05-27 08:44:01 +00:00
MipsTargetObjectFile.h Revert r238190 and r238197: [mips] Make TTypeEncoding indirect to allow .eh_frame to be read-only. 2015-05-27 08:44:01 +00:00
MipsTargetStreamer.h [mips] [IAS] Add support for the .set softfloat/hardfloat directives. 2015-06-02 09:48:04 +00:00