llvm-6502/lib/Target/Mips
Daniel Sanders 98b419bff7 [mips] Add assembler support for '.set mipsX'.
Summary:
This patch also fixes an issue with the way the Mips assembler enables/disables architecture
features. Before this patch, the assembler never disabled feature bits. For example,
.set mips64
.set mips32r2

would result in the 'OR' of mips64 with mips32r2 feature bits which isn't right.
Unfortunately this isn't trivial to fix because there's not an easy way to clear
feature bits as the algorithm in MCSubtargetInfo (ToggleFeature) only clears the bits
that imply the feature being cleared and not the implied bits by the feature (there's a
better explanation to the code I added).

Patch by Matheus Almeida and updated by Toma Tabacu

Reviewers: vmedic, matheusalmeida, dsanders

Reviewed By: dsanders

Subscribers: tomatabacu, llvm-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214709 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-04 12:20:00 +00:00
..
AsmParser [mips] Add assembler support for '.set mipsX'. 2014-08-04 12:20:00 +00:00
Disassembler Prune dependency to MC from each target disassembler. 2014-07-24 11:45:11 +00:00
InstPrinter [mips][mips64r6] Add Relocations R_MIPS_PCHI16, R_MIPS_PCLO16 2014-05-27 14:58:51 +00:00
MCTargetDesc [mips] Add assembler support for '.set mipsX'. 2014-08-04 12:20:00 +00:00
TargetInfo Prune redundant dependencies in LLVMBuild.txt. 2013-12-11 00:30:57 +00:00
CMakeLists.txt enable fast isel tablegen files for Mips 2014-04-25 18:36:38 +00:00
LLVMBuild.txt Prune redundant libdeps. 2014-07-24 11:45:27 +00:00
Makefile enable fast isel tablegen files for Mips 2014-04-25 18:36:38 +00:00
MicroMipsInstrFormats.td Implementation of 16-bit microMIPS instructions MFHI and MFLO. 2014-04-03 12:47:34 +00:00
MicroMipsInstrFPU.td [mips][mips64r6] bc1[tf] are not available on MIPS32r6/MIPS64r6 2014-06-12 15:00:17 +00:00
MicroMipsInstrInfo.td [mips][mips64r6] Use JALR for returns instead of JR (which is not available on MIPS32r6/MIPS64r6) 2014-07-09 10:16:07 +00:00
Mips16FrameLowering.cpp So that we can include frame lowering in the subtarget, remove include 2014-07-02 23:29:55 +00:00
Mips16FrameLowering.h So that we can include frame lowering in the subtarget, remove include 2014-07-02 23:29:55 +00:00
Mips16HardFloat.cpp [C++] Use 'nullptr'. Target edition. 2014-04-25 05:30:21 +00:00
Mips16HardFloat.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
Mips16HardFloatInfo.cpp [C++] Use 'nullptr'. Target edition. 2014-04-25 05:30:21 +00:00
Mips16HardFloatInfo.h This patch has two main functions: 2014-02-14 19:16:39 +00:00
Mips16InstrFormats.td
Mips16InstrInfo.cpp Make InstrInfo depend only upon the Subtarget getting passed in 2014-07-18 23:25:00 +00:00
Mips16InstrInfo.h Make InstrInfo depend only upon the Subtarget getting passed in 2014-07-18 23:25:00 +00:00
Mips16InstrInfo.td [mips][mips64r6] Use JALR for indirect branches instead of JR (which is not available on MIPS32r6/MIPS64r6) 2014-07-09 10:21:59 +00:00
Mips16ISelDAGToDAG.cpp Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +00:00
Mips16ISelDAGToDAG.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
Mips16ISelLowering.cpp Add alignment value to allowsUnalignedMemoryAccess 2014-07-27 17:46:40 +00:00
Mips16ISelLowering.h Add alignment value to allowsUnalignedMemoryAccess 2014-07-27 17:46:40 +00:00
Mips16RegisterInfo.cpp [Modules] Make Support/Debug.h modular. This requires it to not change 2014-04-21 22:55:11 +00:00
Mips16RegisterInfo.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
Mips32r6InstrFormats.td Fix bit initializer which was one bit too long, but worked so long as we silently dropped the leading 0 2014-07-31 01:43:54 +00:00
Mips32r6InstrInfo.td [mips] Fix two patterns that select i32's (for MIPS32r6) / i64's (for MIPS64r6) 2014-07-22 13:36:02 +00:00
Mips64InstrInfo.td [mips][mips64r6] Use JALR for indirect branches instead of JR (which is not available on MIPS32r6/MIPS64r6) 2014-07-09 10:21:59 +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
Mips.h [mips] Revert test commit r195922. 2013-11-28 15:26:33 +00:00
Mips.td [mips] Added FPXX modeless calling convention. 2014-07-10 15:36:12 +00:00
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h Even more spelling fixes for "instruction". 2013-09-28 13:42:22 +00:00
MipsAsmPrinter.cpp [mips] Do not emit '.module fp=...' unless we really need to. 2014-07-21 15:25:24 +00:00
MipsAsmPrinter.h Reset the Subtarget in the AsmPrinter for each machine function 2014-07-18 00:08:53 +00:00
MipsCallingConv.td [mips] Don't use odd-numbered single precision registers for fastcc calling 2014-07-29 14:39:24 +00:00
MipsCodeEmitter.cpp [mips] Try to fix the test/ExecutionEngine tests on a MIPS host. 2014-07-21 12:25:34 +00:00
MipsCondMov.td [mips][mips64r6] c.cond.fmt, mov[fntz], and mov[fntz].[ds] are not available on MIPS32r6/MIPS64r6 2014-06-12 13:39:06 +00:00
MipsConstantIslandPass.cpp Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +00:00
MipsDelaySlotFiller.cpp [mips][mips64r6] Replace m[tf]hi, m[tf]lo, mult, multu, dmult, dmultu, div, ddiv, divu, ddivu for MIPS32r6/MIPS64. 2014-06-12 10:44:10 +00:00
MipsDSPInstrFormats.td Make it possible for the Subtarget to change between function 2014-07-10 17:26:51 +00:00
MipsDSPInstrInfo.td [mips] Define a pseudo instruction which writes to both the lower and higher 2013-10-15 01:48:30 +00:00
MipsFastISel.cpp Make it possible for the Subtarget to change between function 2014-07-10 17:26:51 +00:00
MipsFrameLowering.cpp FrameLowering depends only upon the Subtarget, so only take a subtarget 2014-07-18 23:33:47 +00:00
MipsFrameLowering.h FrameLowering depends only upon the Subtarget, so only take a subtarget 2014-07-18 23:33:47 +00:00
MipsInstrFormats.td [mips] Added support for assembling sdbbp. 2014-06-24 13:00:32 +00:00
MipsInstrFPU.td [mips] Use MFHC1 when it is available (MIPS32r2 and later) for both FP32 and FP64 moves 2014-07-14 12:41:31 +00:00
MipsInstrInfo.cpp Make InstrInfo depend only upon the Subtarget getting passed in 2014-07-18 23:25:00 +00:00
MipsInstrInfo.h Make InstrInfo depend only upon the Subtarget getting passed in 2014-07-18 23:25:00 +00:00
MipsInstrInfo.td Make it possible for the Subtarget to change between function 2014-07-10 17:26:51 +00:00
MipsISelDAGToDAG.cpp Make it possible for the Subtarget to change between function 2014-07-10 17:26:51 +00:00
MipsISelDAGToDAG.h Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +00:00
MipsISelLowering.cpp [mips][PR19612] Fix va_arg for big-endian mode. 2014-08-01 09:17:39 +00:00
MipsISelLowering.h [mips][PR19612] Fix va_arg for big-endian mode. 2014-08-01 09:17:39 +00:00
MipsJITInfo.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:41:26 +00:00
MipsJITInfo.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
MipsLongBranch.cpp Make non-module passes unconditionally added in the pass 2014-07-18 20:29:02 +00:00
MipsMachineFunction.cpp [mips] For the FP64A ABI, odd-numbered double-precision moves must not use mtc1/mfc1. 2014-07-14 13:08:14 +00:00
MipsMachineFunction.h [mips] For the FP64A ABI, odd-numbered double-precision moves must not use mtc1/mfc1. 2014-07-14 13:08:14 +00:00
MipsMCInstLower.cpp [mips] Optimize long branch for MIPS64 by removing %higher and %highest. 2014-05-27 18:53:06 +00:00
MipsMCInstLower.h [mips] Optimize long branch for MIPS64 by removing %higher and %highest. 2014-05-27 18:53:06 +00:00
MipsModuleISelDAGToDAG.cpp Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +00:00
MipsModuleISelDAGToDAG.h Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +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][mips64r6] Add align and dalign 2014-05-15 12:06:36 +00:00
MipsOptimizePICCall.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
MipsOptionRecord.h Include relative path for header outside the current directory. 2014-07-24 16:04:46 +00:00
MipsOs16.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:41:26 +00:00
MipsOs16.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
MipsRegisterInfo.cpp [mips] Added FPXX modeless calling convention. 2014-07-10 15:36:12 +00:00
MipsRegisterInfo.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
MipsRegisterInfo.td [mips][fp64a] Temporarily disable odd-numbered double-precision registers when using the FP64A ABI. 2014-07-16 15:34:07 +00:00
MipsRelocations.h
MipsSchedule.td [mips] Implement shorthand add / sub forms for MIPS. 2014-03-24 14:05:39 +00:00
MipsSEFrameLowering.cpp [mips] For the FP64A ABI, odd-numbered double-precision moves must not use mtc1/mfc1. 2014-07-14 13:08:14 +00:00
MipsSEFrameLowering.h So that we can include frame lowering in the subtarget, remove include 2014-07-02 23:29:55 +00:00
MipsSEInstrInfo.cpp Make InstrInfo depend only upon the Subtarget getting passed in 2014-07-18 23:25:00 +00:00
MipsSEInstrInfo.h Make InstrInfo depend only upon the Subtarget getting passed in 2014-07-18 23:25:00 +00:00
MipsSEISelDAGToDAG.cpp Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +00:00
MipsSEISelDAGToDAG.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
MipsSEISelLowering.cpp [SDAG] MorphNodeTo recursively deletes dead operands of the old 2014-08-01 22:09:43 +00:00
MipsSEISelLowering.h Add alignment value to allowsUnalignedMemoryAccess 2014-07-27 17:46:40 +00:00
MipsSelectionDAGInfo.cpp Have MipsSelectionDAGInfo constructor take a DataLayout rather 2014-06-27 04:38:30 +00:00
MipsSelectionDAGInfo.h Have MipsSelectionDAGInfo constructor take a DataLayout rather 2014-06-27 04:38:30 +00:00
MipsSERegisterInfo.cpp [C++] Use 'nullptr'. Target edition. 2014-04-25 05:30:21 +00:00
MipsSERegisterInfo.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Mips edition 2014-04-29 07:58:02 +00:00
MipsSubtarget.cpp Fundamentally change the MipsSubtarget replacement machinery: 2014-07-18 23:41:32 +00:00
MipsSubtarget.h [mips] Don't use odd-numbered single precision registers for fastcc calling 2014-07-29 14:39:24 +00:00
MipsTargetMachine.cpp Enable partial libcall inlining for all targets by default. 2014-07-23 13:33:00 +00:00
MipsTargetMachine.h Add a non-const subtarget returning function to the target machine 2014-08-01 21:18:01 +00:00
MipsTargetObjectFile.cpp Pass the Mangler by reference. 2014-02-08 14:53:28 +00:00
MipsTargetObjectFile.h Switch all uses of LLVM_OVERRIDE to just use 'override' directly. 2014-03-02 09:09:27 +00:00
MipsTargetStreamer.h [mips] Add assembler support for '.set mipsX'. 2014-08-04 12:20:00 +00:00
MSA.txt [mips] BSEL's and BINS[RL] operands are reversed compared to the vselect node used in the pattern. 2014-03-12 11:54:00 +00:00