llvm-project/llvm/lib/Target/Mips
Daniel Sanders 7727e1098c [mips][p5600] Added P5600 processor and initial scheduler.
Summary:
The P5600 is an out-of-order, superscalar implementation of the MIPS32R5
architecture.

The scheduler has a few missing details (see the 'Tricky Instructions'
section and some quirks of the P5600 are deliberately omitted due to
implementation difficulty and low chance of significant benefit (e.g. the
predicate on P5600WriteEitherALU). However, testing on SingleSource is
showing significant performance benefits on some apps (seven in the 10-30%
range) and only one significant regression (12%) when
-pre-RA-sched=linearize is given. Without -pre-RA-sched=linearize the
results are more variable. Some do even better (up to 55% improvement) but
increased numbers of copies are slowing others down (up to 12%).

Overall, the scheduler as it currently stands is a 2.4% win with
-pre-RA-sched=linearize and a 2.7% win without -pre-RA-sched=linearize.
I'm sure we can improve on this further.

For completeness, the FPGA this was tested on shows some failures with and
without the P5600 scheduler. These appear to be scheduling related since
the two test runs have fairly different sets of failing tests even after
accounting for other factors (e.g. spurious connection failures) however
it's not P5600 specific since we also get some for the generic scheduler.

Reviewers: vkalintiris

Subscribers: mpf, llvm-commits, atrick, vkalintiris

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

llvm-svn: 248725
2015-09-28 18:24:08 +00:00
..
AsmParser [mips] Handling of immediates bigger than 16 bits 2015-09-28 11:11:34 +00:00
Disassembler [mips][microMIPS] Fix an invalid read for lwm32 and reserved reglist values. 2015-09-18 14:20:54 +00:00
InstPrinter MC: Add target hook to control symbol quoting 2015-06-09 00:31:39 +00:00
MCTargetDesc Remove 'const' from some ArrayRefs. ArrayRefs are already immutable. NFC 2015-09-28 00:15:34 +00:00
TargetInfo [Mips64] Add support for MCJIT for MIPS64r2 and MIPS64r6 2015-05-28 13:48:41 +00:00
CMakeLists.txt Remove getDataLayout() from TargetSelectionDAGInfo (had no users) 2015-07-09 02:10:08 +00:00
LLVMBuild.txt Wrap some long lines in LLVMBuild files. NFC 2015-06-12 18:44:57 +00:00
MSA.txt Revert r221048 - Test commit 2014-11-01 16:08:03 +00:00
Makefile
MicroMips32r6InstrFormats.td [mips][microMIPS] Implement CACHEE and PREFE instructions for microMIPS32r6 2015-09-15 10:05:10 +00:00
MicroMips32r6InstrInfo.td [mips][sched] Split IIBranch into specific instruction classes. 2015-09-22 13:36:28 +00:00
MicroMips64r6InstrFormats.td [mips][microMIPS] Implement DDIV, DMOD, DDIVU and DMODU instructions 2015-08-18 14:40:43 +00:00
MicroMips64r6InstrInfo.td [mips][microMIPS] Implement DDIV, DMOD, DDIVU and DMODU instructions 2015-08-18 14:40:43 +00:00
MicroMipsInstrFPU.td [mips][sched] Split IIBranch into specific instruction classes. 2015-09-22 13:36:28 +00:00
MicroMipsInstrFormats.td [mips][microMIPS] Implement PREFX, LHUE, LBE, LBUE, LHE, LWE, SBE, SHE and SWE instructions 2015-09-16 09:14:35 +00:00
MicroMipsInstrInfo.td [mips][sched] Split IIBranch into specific instruction classes. 2015-09-22 13:36:28 +00:00
Mips.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Mips.td [mips][p5600] Added P5600 processor and initial scheduler. 2015-09-28 18:24:08 +00:00
Mips16FrameLowering.cpp PrologEpilogInserter: Rewrite API to determine callee save regsiters. 2015-07-14 17:17:13 +00:00
Mips16FrameLowering.h PrologEpilogInserter: Rewrite API to determine callee save regsiters. 2015-07-14 17:17:13 +00:00
Mips16HardFloat.cpp De-constify pointers to Type since they can't be modified. NFC 2015-08-01 22:20:21 +00:00
Mips16HardFloatInfo.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Mips16HardFloatInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Mips16ISelDAGToDAG.cpp Make TargetLowering::getPointerTy() taking DataLayout as an argument 2015-07-09 02:09:04 +00:00
Mips16ISelDAGToDAG.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Mips16ISelLowering.cpp Make TargetLowering::getPointerTy() taking DataLayout as an argument 2015-07-09 02:09:04 +00:00
Mips16ISelLowering.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Mips16InstrFormats.td
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 Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Mips16InstrInfo.td [mips][sched] Split IIBranch into specific instruction classes. 2015-09-22 13:36:28 +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] Added support for various EVA ASE instructions. 2015-09-15 10:02:16 +00:00
Mips64InstrInfo.td [mips][sched] Split IIBranch into specific instruction classes. 2015-09-22 13:36:28 +00:00
Mips64r6InstrInfo.td [mips][microMIPS] Create microMIPS64r6 subtarget and implement DALIGN, DAUI, DAHI, DATI, DEXT, DEXTM and DEXTU instructions 2015-08-12 12:45:16 +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 Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsAsmPrinter.cpp Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
MipsAsmPrinter.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsCCState.cpp De-constify pointers to Type since they can't be modified. NFC 2015-08-01 22:20:21 +00:00
MipsCCState.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +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 Move most user of TargetMachine::getDataLayout to the Module one 2015-07-16 06:11:10 +00:00
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td
MipsDelaySlotFiller.cpp Save LaneMask with livein registers 2015-09-09 18:08:03 +00:00
MipsEVAInstrFormats.td [mips] Added support for various EVA ASE instructions. 2015-09-15 10:02:16 +00:00
MipsEVAInstrInfo.td [mips] Added support for various EVA ASE instructions. 2015-09-15 10:02:16 +00:00
MipsFastISel.cpp FastISel: Use finishCondBranch() for ARM,Mips,PowerPC FastISel 2015-08-26 01:55:47 +00:00
MipsFrameLowering.cpp [mips] Add support for dynamic stack realignment. 2015-06-02 13:14:46 +00:00
MipsFrameLowering.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsISelDAGToDAG.cpp Make TargetLowering::getPointerTy() taking DataLayout as an argument 2015-07-09 02:09:04 +00:00
MipsISelDAGToDAG.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsISelLowering.cpp Remove 'const' from some ArrayRefs. ArrayRefs are already immutable. NFC 2015-09-28 00:15:34 +00:00
MipsISelLowering.h [mips] Reserve address spaces 1-255 for software use. 2015-09-08 09:07:03 +00:00
MipsInstrFPU.td [mips][sched] Split IIBranch into specific instruction classes. 2015-09-22 13:36:28 +00:00
MipsInstrFormats.td [mips] Add support for branch-likely pseudo-instructions 2015-09-15 15:06:26 +00:00
MipsInstrInfo.cpp PseudoSourceValue: Replace global manager with a manager in a machine function. 2015-08-11 23:09:45 +00:00
MipsInstrInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsInstrInfo.td [mips] Handling of immediates bigger than 16 bits 2015-09-28 11:11:34 +00:00
MipsLongBranch.cpp Remove most of the TargetMachine::getSubtarget/getSubtargetImpl 2015-01-29 23:27:36 +00:00
MipsMCInstLower.cpp Use MCSymbols for FastISel. 2015-06-23 12:21:54 +00:00
MipsMCInstLower.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsMSAInstrFormats.td [mips] Use PredicateControl for the MSA ASE instructions. NFC. 2015-09-24 12:10:23 +00:00
MipsMSAInstrInfo.td [mips] Use PredicateControl for the MSA ASE instructions. NFC. 2015-09-24 12:10:23 +00:00
MipsMachineFunction.cpp PseudoSourceValue: Transform the mips subclass to target independent subclasses 2015-08-11 23:23:17 +00:00
MipsMachineFunction.h PseudoSourceValue: Transform the mips subclass to target independent subclasses 2015-08-11 23:23:17 +00:00
MipsModuleISelDAGToDAG.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsOptimizePICCall.cpp Remove most of the TargetMachine::getSubtarget/getSubtargetImpl 2015-01-29 23:27:36 +00:00
MipsOptionRecord.h [mips] Add COP0 register class and use it in M[FT]C0/DM[FT]C0. 2015-06-27 15:39:19 +00:00
MipsOs16.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsRegisterInfo.cpp Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
MipsRegisterInfo.h Targets: commonize some stack realignment code 2015-07-20 22:51:32 +00:00
MipsRegisterInfo.td [mips] Add COP0 register class and use it in M[FT]C0/DM[FT]C0. 2015-06-27 15:39:19 +00:00
MipsSEFrameLowering.cpp [mips] Remove incorrect DebugLoc entries from prologue 2015-08-28 17:53:26 +00:00
MipsSEFrameLowering.h PrologEpilogInserter: Rewrite API to determine callee save regsiters. 2015-07-14 17:17:13 +00:00
MipsSEISelDAGToDAG.cpp [mips] Remove incorrect DebugLoc entries from prologue 2015-08-28 17:53:26 +00:00
MipsSEISelDAGToDAG.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsSEISelLowering.cpp propagate fast-math-flags on DAG nodes 2015-09-16 16:31:21 +00:00
MipsSEISelLowering.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsSEInstrInfo.cpp [mips] Remove incorrect DebugLoc entries from prologue 2015-08-28 17:53:26 +00:00
MipsSEInstrInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +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][p5600] Added P5600 processor and initial scheduler. 2015-09-28 18:24:08 +00:00
MipsScheduleP5600.td [mips][p5600] Added P5600 processor and initial scheduler. 2015-09-28 18:24:08 +00:00
MipsSubtarget.cpp Revert r247692: Replace Triple with a new TargetTuple in MCTargetDesc/* and related. NFC. 2015-09-15 16:17:27 +00:00
MipsSubtarget.h [mips][p5600] Added P5600 processor and initial scheduler. 2015-09-28 18:24:08 +00:00
MipsTargetMachine.cpp constify the Function parameter to the TTI creation callback and 2015-09-16 23:38:13 +00:00
MipsTargetMachine.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MipsTargetObjectFile.cpp Move most user of TargetMachine::getDataLayout to the Module one 2015-07-16 06:11:10 +00:00
MipsTargetObjectFile.h Move most user of TargetMachine::getDataLayout to the Module one 2015-07-16 06:11:10 +00:00
MipsTargetStreamer.h [mips][ias] Implement .cpreturn directive. 2015-09-22 10:50:09 +00:00