llvm/lib/Target/Mips
Jack Carter 2f68b311a1 Initial assembler implementation of Mips load address macro
This patch provides initial implementation of load address 
macro instruction for Mips. We have implemented two kinds 
of expansions with their variations depending on the size 
of immediate operand:

 1) load address with immediate value directly:
    * la d,j => addiu d,$zero,j   (for -32768 <= j <= 65535)
    * la d,j => lui d,hi16(j)
                ori d,d,lo16(j)   (for any other 32 bit value of j)

 2) load load address with register offset value
    * la d,j(s) => addiu d,s,j     (for -32768 <= j <= 65535)
    * la d,j(s) => lui d,hi16(j)   (for any other 32 bit value of j)
                   ori d,d,lo16(j)
                   addu d,d,s

This patch does not cover the case when the address is loaded 
from the value of the label or function.

Contributer: Vladimir Medic


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165561 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-09 23:29:45 +00:00
..
AsmParser Initial assembler implementation of Mips load address macro 2012-10-09 23:29:45 +00:00
Disassembler MIPS DSP: add functions which decode DSP and accumulator registers. 2012-09-27 02:01:10 +00:00
InstPrinter Add HIGHER and HIGHEST relocations to Mips backend. 2012-07-21 03:09:04 +00:00
MCTargetDesc This patch moves from using a hard coded number (4) 2012-10-03 21:58:54 +00:00
TargetInfo remove Emacs-tag form .cpp files in Mips Backend, and fix some typo. 2012-02-17 08:55:11 +00:00
CMakeLists.txt The mips 64bit instructions DSLL, DSRA, DSRL, DEXT and DINS get transformed by the assembler or through codegen direct object output to other variants based on the value of the immediate values of the operands. 2012-10-02 23:09:40 +00:00
LLVMBuild.txt Add disassembler to MIPS. 2012-04-17 18:03:21 +00:00
Makefile MIPS DSP: add code necessary for pseudo instruction lowering. 2012-09-27 01:59:07 +00:00
Mips16FrameLowering.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
Mips16FrameLowering.h Properly save and restore RA and Mips16 callee save registers S0,S1 2012-09-21 01:08:16 +00:00
Mips16InstrFormats.td Add basic ability to setup call frame, and make procedure calls. 2012-07-23 23:45:54 +00:00
Mips16InstrInfo.cpp 1. Add load/store words from the stack 2012-09-28 02:26:24 +00:00
Mips16InstrInfo.h Add definitions of two subclasses of MipsRegisterInfo, Mips16RegisterInfo and 2012-07-31 23:41:32 +00:00
Mips16InstrInfo.td Patch for integer multiply, signed/unsigned, long/long long. 2012-10-05 18:27:54 +00:00
Mips16RegisterInfo.cpp Delete member MipsFunctionInfo::OutArgFIRange and code that accesses it. 2012-09-26 19:18:19 +00:00
Mips16RegisterInfo.h Remove unused private field to silence build warning. 2012-08-23 04:45:31 +00:00
Mips64InstrInfo.td Improvements to MIPS64 assembler: 2012-10-09 16:27:43 +00:00
Mips.h Add long branch expansion pass for MIPS. 2012-06-14 01:19:35 +00:00
Mips.td Add flags and feature bits for mips dsp. 2012-09-21 23:41:49 +00:00
MipsAnalyzeImmediate.cpp Fix integer undefined behavior due to signed left shift overflow in LLVM. 2012-08-24 23:29:28 +00:00
MipsAnalyzeImmediate.h Fix undefined behavior in the Mips backend. 2012-03-09 06:36:45 +00:00
MipsAsmPrinter.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsAsmPrinter.h MIPS DSP: add code necessary for pseudo instruction lowering. 2012-09-27 01:59:07 +00:00
MipsCallingConv.td Add Android ABI to Mips backend to handle functions returning vectors of four 2012-08-16 03:48:05 +00:00
MipsCodeEmitter.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsCondMov.td 1. introduce MipsPat in place of Pat in order to exclude those from 2012-06-14 21:03:23 +00:00
MipsDelaySlotFiller.cpp Disable Mips' delay slot filler when optimization level is O0. 2012-08-24 20:40:15 +00:00
MipsDSPInstrFormats.td MIPS DSP: other miscellaneous instructions. 2012-09-28 20:50:31 +00:00
MipsDSPInstrInfo.td MIPS DSP: other miscellaneous instructions. 2012-09-28 20:50:31 +00:00
MipsELFWriterInfo.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsELFWriterInfo.h Add MipsELFWriterInfo.{h,cpp}. 2012-08-17 21:38:47 +00:00
MipsFrameLowering.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsFrameLowering.h Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsInstrFormats.td Adding support for instructions mfc0, mfc2, mtc0, mtc2 2012-10-06 01:17:37 +00:00
MipsInstrFPU.td Remove aligned/unaligned load/store fragments defined in MipsInstrInfo.td and 2012-09-15 01:52:08 +00:00
MipsInstrInfo.cpp mips16: When copying operands in a conditional branch instruction, allow for 2012-09-13 17:12:37 +00:00
MipsInstrInfo.h Make function loadImmediate a member of MipsSEInstrInfo and change it to return 2012-08-23 00:21:05 +00:00
MipsInstrInfo.td Initial assembler implementation of Mips load address macro 2012-10-09 23:29:45 +00:00
MipsISelDAGToDAG.cpp Patch for integer multiply, signed/unsigned, long/long long. 2012-10-05 18:27:54 +00:00
MipsISelLowering.cpp Patch for integer multiply, signed/unsigned, long/long long. 2012-10-05 18:27:54 +00:00
MipsISelLowering.h MIPS DSP: Branch on Greater Than or Equal To Value 32 in DSPControl Pos Field instruction. 2012-09-27 02:15:57 +00:00
MipsJITInfo.cpp Implement MipsJITInfo::replaceMachineCodeForFunction. 2012-08-01 02:29:24 +00:00
MipsJITInfo.h Fix coding style violations. Remove white spaces and tabs. 2012-06-14 21:10:56 +00:00
MipsLongBranch.cpp Follow-up patch to r162731. 2012-08-28 18:58:57 +00:00
MipsMachineFunction.cpp Add basic ability to setup call frame, and make procedure calls. 2012-07-23 23:45:54 +00:00
MipsMachineFunction.h Delete member MipsFunctionInfo::OutArgFIRange and code that accesses it. 2012-09-26 19:18:19 +00:00
MipsMCInstLower.cpp There are some Mips instructions that are lowered by the 2012-09-06 02:31:34 +00:00
MipsMCInstLower.h MIPS DSP: add code necessary for pseudo instruction lowering. 2012-09-27 01:59:07 +00:00
MipsRegisterInfo.cpp Add MIPS accumulator and DSP control registers. 2012-09-21 23:48:37 +00:00
MipsRegisterInfo.h Add a member of type Mips16InstrInfo/MipsSEInstrInfo to class 2012-08-22 23:58:53 +00:00
MipsRegisterInfo.td 1. Add load/store words from the stack 2012-09-28 02:26:24 +00:00
MipsRelocations.h remove blanks, and some code format 2012-02-28 07:46:26 +00:00
MipsSchedule.td remove blanks, and some code format 2012-02-28 07:46:26 +00:00
MipsSEFrameLowering.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsSEFrameLowering.h Add definitions of two subclasses of MipsFrameLowering, Mips16FrameLowering and 2012-07-31 22:50:19 +00:00
MipsSEInstrInfo.cpp Make function loadImmediate a member of MipsSEInstrInfo and change it to return 2012-08-23 00:21:05 +00:00
MipsSEInstrInfo.h Make function loadImmediate a member of MipsSEInstrInfo and change it to return 2012-08-23 00:21:05 +00:00
MipsSelectionDAGInfo.cpp remove Emacs-tag form .cpp files in Mips Backend, and fix some typo. 2012-02-17 08:55:11 +00:00
MipsSelectionDAGInfo.h
MipsSERegisterInfo.cpp Delete member MipsFunctionInfo::OutArgFIRange and code that accesses it. 2012-09-26 19:18:19 +00:00
MipsSERegisterInfo.h Add a member of type Mips16InstrInfo/MipsSEInstrInfo to class 2012-08-22 23:58:53 +00:00
MipsSubtarget.cpp Initialize boolean variables in MipsSubtarget's constructor. 2012-09-25 23:07:11 +00:00
MipsSubtarget.h Add flags and feature bits for mips dsp. 2012-09-21 23:41:49 +00:00
MipsTargetMachine.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsTargetMachine.h Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsTargetObjectFile.cpp Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
MipsTargetObjectFile.h