llvm-project/llvm/lib/Target/Mips
Simon Atanasyan a0291110da [MIPS] Use custom bitcast lowering to avoid excessive instructions
On Mips32r2 bitcast can be expanded to two sw instructions and an ldc1
when using bitcast i64 to double or an sdc1 and two lw instructions when
using bitcast double to i64. By introducing custom lowering that uses
mtc1/mthc1 we can avoid excessive instructions.

Patch by Mirko Brkusanin.

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

llvm-svn: 359171
2019-04-25 07:47:28 +00:00
..
AsmParser [mips] Remove unused FGRH32 register class. NFC 2019-04-03 10:08:27 +00:00
Disassembler Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InstPrinter Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MCTargetDesc [mips] Emit `.module softfloat` directive 2019-02-26 14:45:17 +00:00
TargetInfo Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [MIPS GlobalISel] Add pre legalizer combiner pass 2019-01-14 10:27:05 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MSA.txt
MicroMips32r6InstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MicroMips32r6InstrInfo.td [mips] Fix encoding of the `mov.d` command for microMIPS R6 2019-03-13 14:23:12 +00:00
MicroMipsDSPInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MicroMipsDSPInstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MicroMipsInstrFPU.td [mips] Fix encoding of the `mov.d` command for microMIPS R6 2019-03-13 14:23:12 +00:00
MicroMipsInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MicroMipsInstrInfo.td [mips] Join some adjacent `let DecoderNamespace` blocks. NFC 2019-03-13 16:00:42 +00:00
MicroMipsSizeReduction.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips.td [mips] Support for +abs2008 attribute 2019-01-28 14:59:30 +00:00
Mips16FrameLowering.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16FrameLowering.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16HardFloat.cpp [opaque pointer types] Add a FunctionCallee wrapper type, and use it. 2019-02-01 02:28:03 +00:00
Mips16HardFloatInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16HardFloatInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16ISelDAGToDAG.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16ISelDAGToDAG.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16ISelLowering.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16ISelLowering.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16InstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16InstrInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16InstrInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16InstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16RegisterInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips16RegisterInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips32r6InstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips32r6InstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips64InstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Mips64r6InstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsAnalyzeImmediate.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsAnalyzeImmediate.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsAsmPrinter.cpp [AsmPrinter] refactor to remove remove AsmVariant. NFC 2019-04-10 16:38:43 +00:00
MipsAsmPrinter.h [AsmPrinter] refactor to remove remove AsmVariant. NFC 2019-04-10 16:38:43 +00:00
MipsBranchExpansion.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsCCState.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsCCState.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsCallLowering.cpp [MIPS GlobalISel] Lower float and double arguments in registers 2019-03-25 11:23:41 +00:00
MipsCallLowering.h [MIPS GlobalISel] Lower float and double arguments in registers 2019-03-25 11:23:41 +00:00
MipsCallingConv.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsCondMov.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsConstantIslandPass.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsDSPInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsDSPInstrInfo.td [MIPS][microMIPS] Fix PseudoMTLOHI_MM matching and expansion 2019-03-13 11:04:38 +00:00
MipsDelaySlotFiller.cpp Add "const" in GetUnderlyingObjects. NFC 2019-04-24 06:55:50 +00:00
MipsEVAInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsEVAInstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsExpandPseudo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsFastISel.cpp [Mips] Fix missing masking in fast-isel of br (PR40325) 2019-02-25 18:54:17 +00:00
MipsFrameLowering.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsFrameLowering.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsISelDAGToDAG.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsISelDAGToDAG.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsISelLowering.cpp [MIPS] Use custom bitcast lowering to avoid excessive instructions 2019-04-25 07:47:28 +00:00
MipsISelLowering.h [TargetLowering] Rename preferShiftsToClearExtremeBits and shouldFoldShiftPairToMask (PR41359) 2019-04-16 20:57:28 +00:00
MipsInstrFPU.td [mips] Fix encoding of the `mov.d` command for microMIPS R6 2019-03-13 14:23:12 +00:00
MipsInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsInstrInfo.cpp Implementation of asm-goto support in LLVM 2019-02-08 20:48:56 +00:00
MipsInstrInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsInstrInfo.td [mips] Map SW instruction to its microMIPS R6 variant 2019-03-13 13:09:30 +00:00
MipsInstructionSelector.cpp [MIPS GlobalISel] Select float constants 2019-03-28 16:58:12 +00:00
MipsLegalizerInfo.cpp [MIPS GlobalISel] Select floating point arithmetic operations 2019-04-03 14:12:59 +00:00
MipsLegalizerInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMCInstLower.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMCInstLower.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMSAInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMSAInstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMTInstrFormats.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMTInstrInfo.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMachineFunction.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsMachineFunction.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsModuleISelDAGToDAG.cpp CodeGen: Remove pipeline dependencies on StackProtector; NFC 2018-07-13 00:08:38 +00:00
MipsOptimizePICCall.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsOptionRecord.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsOs16.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsPreLegalizerCombiner.cpp [MIPS GlobalISel] Combine extending loads 2019-01-24 10:09:52 +00:00
MipsRegisterBankInfo.cpp [MIPS GlobalISel] Select floating point arithmetic operations 2019-04-03 14:12:59 +00:00
MipsRegisterBankInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsRegisterBanks.td [MIPS GlobalISel] Add floating point register bank 2019-03-25 11:30:46 +00:00
MipsRegisterInfo.cpp [mips] Use AltOrders to prevent using odd FP-registers 2019-04-02 13:57:32 +00:00
MipsRegisterInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsRegisterInfo.td [mips] Remove unused FGRH32 register class. NFC 2019-04-03 10:08:27 +00:00
MipsSEFrameLowering.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSEFrameLowering.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSEISelDAGToDAG.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSEISelDAGToDAG.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSEISelLowering.cpp [MIPS] Use custom bitcast lowering to avoid excessive instructions 2019-04-25 07:47:28 +00:00
MipsSEISelLowering.h [MIPS] Use custom bitcast lowering to avoid excessive instructions 2019-04-25 07:47:28 +00:00
MipsSEInstrInfo.cpp [MIPS][microMIPS] Fix PseudoMTLOHI_MM matching and expansion 2019-03-13 11:04:38 +00:00
MipsSEInstrInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSERegisterInfo.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSERegisterInfo.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSchedule.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsScheduleGeneric.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsScheduleP5600.td Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsSubtarget.cpp [mips] Support for +abs2008 attribute 2019-01-28 14:59:30 +00:00
MipsSubtarget.h [mips] Support for +abs2008 attribute 2019-01-28 14:59:30 +00:00
MipsTargetMachine.cpp [Mips][CodeGen] Remove MachineFunction::setSubtarget. Change Mips to just copy the subtarget from the MachineFunction instead of recalculating it. 2019-04-24 06:48:31 +00:00
MipsTargetMachine.h [Mips][CodeGen] Remove MachineFunction::setSubtarget. Change Mips to just copy the subtarget from the MachineFunction instead of recalculating it. 2019-04-24 06:48:31 +00:00
MipsTargetObjectFile.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsTargetObjectFile.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MipsTargetStreamer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Relocation.txt [mips] Removal of microMIPS64R6 2017-12-11 11:21:40 +00:00