llvm-project/llvm/lib/Target/Mips
Simon Dardis b60833c0ca [mips] Enforce compact branch register restrictions
Enforce compact branch register restrictions such as the use of the zero
register, both operands being the same register. Emit clear error in such
cases as the issue is subtle.

For bovc and bnvc, silently fixup such cases when emitting objects directly,
like LLVM started doing in rL269899.

Reviewers: vkalintiris, dsanders

Differential Review: http://reviews.llvm.org/D20475

llvm-svn: 271301
2016-05-31 17:34:42 +00:00
..
AsmParser [mips] Enforce compact branch register restrictions 2016-05-31 17:34:42 +00:00
Disassembler [MIPS][LLVM-MC] Fix Disassemble of Negative Offset 2016-05-24 09:57:10 +00:00
InstPrinter [mips] Fix unused variable warning for release builds introduced by r268379. 2016-05-03 14:00:37 +00:00
MCTargetDesc [mips] Enforce compact branch register restrictions 2016-05-31 17:34:42 +00:00
TargetInfo Remove autoconf support 2016-01-26 21:29:08 +00:00
CMakeLists.txt [mips] MIPS32R6 compact branch support 2016-03-14 16:24:05 +00:00
LLVMBuild.txt
MSA.txt Revert: r249536 - Testing commit access with a trival whitespace change. 2015-10-07 10:57:06 +00:00
MicroMips32r6InstrFormats.td [mips][microMIPS] Implement BC1EQZC, BC1NEZC, BC2EQZC and BC2NEZC instructions 2016-05-19 07:31:28 +00:00
MicroMips32r6InstrInfo.td [mips][microMIPS] Implement BC1EQZC, BC1NEZC, BC2EQZC and BC2NEZC instructions 2016-05-19 07:31:28 +00:00
MicroMips64r6InstrFormats.td [mips][micromips] Implement DSBH, DSHD, DSLL, DSLL32, DSLLV, DSRA, DSRA32 and DSRAV instructions 2016-05-11 11:17:04 +00:00
MicroMips64r6InstrInfo.td [mips][micromips] Implement DSBH, DSHD, DSLL, DSLL32, DSLLV, DSRA, DSRA32 and DSRAV instructions 2016-05-11 11:17:04 +00:00
MicroMipsDSPInstrFormats.td [mips][microMIPS][DSP] Implement BALIGN, BITREV, BPOSGE32, CMP*, CMPGDU*, CMPGU* and CMPU* instructions 2016-05-17 09:32:58 +00:00
MicroMipsDSPInstrInfo.td [mips][microMIPS][DSP] Implement BALIGN, BITREV, BPOSGE32, CMP*, CMPGDU*, CMPGU* and CMPU* instructions 2016-05-17 09:32:58 +00:00
MicroMipsInstrFPU.td Revert "[mips][microMIPS] Implement CFC*, CTC* and LDC* instructions" 2016-05-12 12:46:06 +00:00
MicroMipsInstrFormats.td [mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions and add CodeGen support 2016-05-18 06:54:59 +00:00
MicroMipsInstrInfo.td [mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions and add CodeGen support 2016-05-18 06:54:59 +00:00
Mips.h [Mips] Fix -Wunused-private-field warning after r263444. 2016-03-14 18:10:20 +00:00
Mips.td [TableGen] Remove MnemonicContainsDot from AsmParser. It isn't used. NFC 2015-12-29 07:03:30 +00:00
Mips16FrameLowering.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
Mips16FrameLowering.h PrologEpilogInserter: Rewrite API to determine callee save regsiters. 2015-07-14 17:17:13 +00:00
Mips16HardFloat.cpp [mips] Use range-based for loops. NFC. 2016-03-14 15:05:30 +00:00
Mips16HardFloatInfo.cpp
Mips16HardFloatInfo.h
Mips16ISelDAGToDAG.cpp SDAG: Implement Select instead of SelectImpl in MipsDAGToDAGISel 2016-05-13 23:55:59 +00:00
Mips16ISelDAGToDAG.h SDAG: Implement Select instead of SelectImpl in MipsDAGToDAGISel 2016-05-13 23:55:59 +00:00
Mips16ISelLowering.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
Mips16ISelLowering.h
Mips16InstrFormats.td
Mips16InstrInfo.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
Mips16InstrInfo.h
Mips16InstrInfo.td [mips][mips16] Fix ZERO is not a CPU16Regs register error from the machine verifier. 2016-05-19 10:42:14 +00:00
Mips16RegisterInfo.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
Mips16RegisterInfo.h
Mips32r6InstrFormats.td [PATCH] [mips] Restrict the creation of compact branches 2016-05-18 10:38:01 +00:00
Mips32r6InstrInfo.td [mips][microMIPS] Implement BC1EQZC, BC1NEZC, BC2EQZC and BC2NEZC instructions 2016-05-19 07:31:28 +00:00
Mips64InstrInfo.td [mips][micromips] Implement DSBH, DSHD, DSLL, DSLL32, DSLLV, DSRA, DSRA32 and DSRAV instructions 2016-05-11 11:17:04 +00:00
Mips64r6InstrInfo.td [mips][microMIPS] Add CodeGen support for MUL* and DMUL* instructions 2016-05-06 08:24:14 +00:00
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp Don't pass a Reloc::Model to MC. 2016-05-18 11:58:50 +00:00
MipsAsmPrinter.h [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
MipsCCState.cpp [mips] Fix an issue with long double when function roundl is defined 2016-03-14 12:50:23 +00:00
MipsCCState.h
MipsCallingConv.td [mips] Interrupt attribute support for mips32r2+. 2015-10-26 12:38:43 +00:00
MipsCondMov.td Revert "[mips] Promote the result of SETCC nodes to GPR width." 2016-03-01 20:25:43 +00:00
MipsConstantIslandPass.cpp [mips][mips16] Use isUnconditionalBranch() in AnalyzeBranch() and constant island pass. 2016-05-06 13:23:51 +00:00
MipsDSPInstrFormats.td [mips][microMIPS] Implement APPEND, BPOSGE32C, MODSUB, MULSA.W.PH and MULSAQ_S.W.PH instructions 2016-05-13 11:32:53 +00:00
MipsDSPInstrInfo.td [mips][microMIPS][DSP] Implement BALIGN, BITREV, BPOSGE32, CMP*, CMPGDU*, CMPGU* and CMPU* instructions 2016-05-17 09:32:58 +00:00
MipsDelaySlotFiller.cpp [mips] Compact branch policy control for MIPSR6 2016-05-17 10:21:43 +00:00
MipsEVAInstrFormats.td [mips] Added support for various EVA ASE instructions. 2015-09-15 10:02:16 +00:00
MipsEVAInstrInfo.td [mips] Range check simm9 and fix a bug this revealed. 2016-03-31 13:15:23 +00:00
MipsFastISel.cpp [mips][fastisel] Conditional moves do not have implicit operands. 2016-05-06 12:57:26 +00:00
MipsFrameLowering.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
MipsFrameLowering.h Change eliminateCallFramePseudoInstr() to return an iterator 2016-03-31 18:33:38 +00:00
MipsHazardSchedule.cpp [PATCH] [mips] Fix forbidden slot hazard handling 2016-04-29 16:04:18 +00:00
MipsISelDAGToDAG.cpp SDAG: Implement Select instead of SelectImpl in MipsDAGToDAGISel 2016-05-13 23:55:59 +00:00
MipsISelDAGToDAG.h SDAG: Implement Select instead of SelectImpl in MipsDAGToDAGISel 2016-05-13 23:55:59 +00:00
MipsISelLowering.cpp [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
MipsISelLowering.h [PR27599] [SystemZ] [SelectionDAG] Fix extension of atomic cmpxchg result. 2016-05-10 16:49:04 +00:00
MipsInstrFPU.td Revert "[mips][microMIPS] Implement CFC*, CTC* and LDC* instructions" 2016-05-12 12:46:06 +00:00
MipsInstrFormats.td [mips] MIPS32R6 compact branch support 2016-03-14 16:24:05 +00:00
MipsInstrInfo.cpp [mips] bnec/beqc register constraint fix 2016-05-31 09:54:55 +00:00
MipsInstrInfo.h [mips] MIPS32R6 compact branch support 2016-03-14 16:24:05 +00:00
MipsInstrInfo.td [mips][microMIPS] Implement LH, LHE, LHU and LHUE instructions and add CodeGen support 2016-05-18 06:54:59 +00:00
MipsLongBranch.cpp [mips] More range-based for loops. NFC. 2016-04-15 20:43:17 +00:00
MipsMCInstLower.cpp [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
MipsMCInstLower.h [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
MipsMSAInstrFormats.td [mips] Use PredicateControl for the MSA ASE instructions. NFC. 2015-09-24 12:10:23 +00:00
MipsMSAInstrInfo.td [mips] Split mem_msa into range checked mem_simm10 and mem_simm10_lsl[123] 2016-03-31 14:12:01 +00:00
MipsMachineFunction.cpp [mips][microMIPS] Fix for "Cannot copy registers" assertion 2016-04-13 06:17:21 +00:00
MipsMachineFunction.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
MipsModuleISelDAGToDAG.cpp
MipsOptimizePICCall.cpp
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 [mips] Use range-based for loops. NFC. 2016-04-08 10:33:00 +00:00
MipsRegisterInfo.cpp [mips][ias] Attempt to fix 'not all control paths return a value' reported by MSVC. 2016-05-09 15:37:52 +00:00
MipsRegisterInfo.h [mips][micromips] Make getPointerRegClass() result depend on the instruction. 2016-05-09 13:38:25 +00:00
MipsRegisterInfo.td [mips][micromips] Make getPointerRegClass() result depend on the instruction. 2016-05-09 13:38:25 +00:00
MipsSEFrameLowering.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
MipsSEFrameLowering.h Re-apply "[mips] Use correct frame register for DWARF info when dynamically realigning the stack."" 2015-11-12 14:11:43 +00:00
MipsSEISelDAGToDAG.cpp SDAG: Implement Select instead of SelectImpl in MipsDAGToDAGISel 2016-05-13 23:55:59 +00:00
MipsSEISelDAGToDAG.h SDAG: Implement Select instead of SelectImpl in MipsDAGToDAGISel 2016-05-13 23:55:59 +00:00
MipsSEISelLowering.cpp [mips][microMIPS] Implement APPEND, BPOSGE32C, MODSUB, MULSA.W.PH and MULSAQ_S.W.PH instructions 2016-05-13 11:32:53 +00:00
MipsSEISelLowering.h
MipsSEInstrInfo.cpp [mips] Fix a small typo that would leave BLTZC out of getAnalyzableBrOpc().' 2016-04-22 13:05:51 +00:00
MipsSEInstrInfo.h [mips] Interrupt attribute support for mips32r2+. 2015-10-26 12:38:43 +00:00
MipsSERegisterInfo.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
MipsSERegisterInfo.h
MipsSchedule.td [mips] MIPSR6 Instruction itineraries 2016-03-11 13:05:06 +00:00
MipsScheduleP5600.td TableGen: Check scheduling models for completeness 2016-03-01 20:03:21 +00:00
MipsSubtarget.cpp [mips][micromips] Initial support for micrmomips DSP instructions and addu.qb implementation 2015-10-12 16:07:25 +00:00
MipsSubtarget.h Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/ 2016-01-27 16:32:26 +00:00
MipsTargetMachine.cpp Delete Reloc::Default. 2016-05-18 22:04:49 +00:00
MipsTargetMachine.h Delete Reloc::Default. 2016-05-18 22:04:49 +00:00
MipsTargetObjectFile.cpp Unbreak non-X86 targets from fallout caused by r261462 2016-02-21 01:40:04 +00:00
MipsTargetObjectFile.h Unbreak non-X86 targets from fallout caused by r261462 2016-02-21 01:40:04 +00:00
MipsTargetStreamer.h [mips][ias] EF_MIPS_MICROMIPS should iff microMIPS code was emitted. 2016-05-16 09:10:13 +00:00