llvm-6502/lib/Target/Mips
Jack Carter a9a5c537ad Mips specific inline asm operand modifier 'D'
Modifier 'D' is to use the second word of a double integer.

We had previously implemented the pure register varient of 
the modifier and this patch implements the memory reference.



#include "stdio.h"

int b[8] = {0,1,2,3,4,5,6,7};
void main()
{
    int i;
    
    // The first word. Notice, no 'D'
    {asm (
    "lw    %0,%1;"
    : "=r" (i)
    : "m" (*(b+4))
    );}
    
    printf("%d\n",i);

    // The second word
    {asm (
    "lw    %0,%D1;"
    : "=r" (i)
    : "m" (*(b+4))
    );}
    
    printf("%d\n",i);
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179135 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-09 23:19:50 +00:00
..
AsmParser This patch that enables the Mips assembler to use symbols for offset for instructions 2013-03-22 00:05:30 +00:00
Disassembler [mips] Fix DSP instructions to have explicit accumulator register operands. 2013-03-30 01:58:00 +00:00
InstPrinter
MCTargetDesc Fix the invalid opcode for Mips branch instructions in the assembler 2013-03-22 00:29:10 +00:00
TargetInfo
CMakeLists.txt This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
LLVMBuild.txt
Makefile
Mips16FrameLowering.cpp
Mips16FrameLowering.h [mips] Add parameter Alignment to MipsFrameLowering's constructor. 2013-03-29 01:51:04 +00:00
Mips16InstrFormats.td
Mips16InstrInfo.cpp [mips] Define overloaded versions of storeRegToStack and loadRegFromStack. 2013-03-29 02:14:12 +00:00
Mips16InstrInfo.h [mips] Define overloaded versions of storeRegToStack and loadRegFromStack. 2013-03-29 02:14:12 +00:00
Mips16InstrInfo.td [mips] Fix definitions of multiply, multiply-add/sub and divide instructions. 2013-03-30 01:36:35 +00:00
Mips16ISelDAGToDAG.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
Mips16ISelDAGToDAG.h This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
Mips16ISelLowering.cpp Add a new method which enables one to change register classes. 2013-03-14 22:02:09 +00:00
Mips16ISelLowering.h [mips] Define two subclasses of MipsTargetLowering. Mips16TargetLowering is for 2013-03-13 00:54:29 +00:00
Mips16RegisterInfo.cpp [mips] Define a function which returns the GPR register class. 2013-03-29 19:17:42 +00:00
Mips16RegisterInfo.h [mips] Define a function which returns the GPR register class. 2013-03-29 19:17:42 +00:00
Mips64InstrInfo.td [mips] Fix definitions of multiply, multiply-add/sub and divide instructions. 2013-03-30 01:36:35 +00:00
Mips.h
Mips.td
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp Mips specific inline asm operand modifier 'D' 2013-04-09 23:19:50 +00:00
MipsAsmPrinter.h
MipsCallingConv.td
MipsCodeEmitter.cpp [mips] Expand pseudo multiply/divide instructions in MipsCodeEmitter.cpp. 2013-04-02 22:53:58 +00:00
MipsCondMov.td
MipsConstantIslandPass.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsDelaySlotFiller.cpp Fix comment. 2013-03-25 20:11:16 +00:00
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td [mips] Add patterns for DSP indexed load instructions. 2013-03-30 02:14:45 +00:00
MipsFrameLowering.cpp
MipsFrameLowering.h [mips] Add parameter Alignment to MipsFrameLowering's constructor. 2013-03-29 01:51:04 +00:00
MipsInstrFormats.td
MipsInstrFPU.td [mips] Define reg+imm load/store pattern templates. 2013-03-30 02:01:48 +00:00
MipsInstrInfo.cpp
MipsInstrInfo.h [mips] Define overloaded versions of storeRegToStack and loadRegFromStack. 2013-03-29 02:14:12 +00:00
MipsInstrInfo.td [mips] Add patterns for DSP indexed load instructions. 2013-03-30 02:14:45 +00:00
MipsISelDAGToDAG.cpp Remove some unused variables to clean the Clang -Werror build 2013-03-14 23:11:07 +00:00
MipsISelDAGToDAG.h [mips] Rename functions and variables to start with proper case. 2013-03-14 18:33:23 +00:00
MipsISelLowering.cpp [mips] Fix DSP instructions to have explicit accumulator register operands. 2013-03-30 01:58:00 +00:00
MipsISelLowering.h [mips] Add mips-specific nodes which will be used to select multiply and divide 2013-03-30 01:14:04 +00:00
MipsJITInfo.cpp
MipsJITInfo.h
MipsLongBranch.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsMachineFunction.cpp
MipsMachineFunction.h
MipsMCInstLower.cpp
MipsMCInstLower.h
MipsModuleISelDAGToDAG.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsModuleISelDAGToDAG.h This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsRegisterInfo.cpp
MipsRegisterInfo.h [mips] Define a function which returns the GPR register class. 2013-03-29 19:17:42 +00:00
MipsRegisterInfo.td [mips] Change type of accumulator registers to Untyped. Add two more accumulator 2013-03-29 03:27:21 +00:00
MipsRelocations.h
MipsSchedule.td
MipsSEFrameLowering.cpp [mips] Expand pseudo load, store and copy instructions right before 2013-03-30 01:04:11 +00:00
MipsSEFrameLowering.h [mips] Add parameter Alignment to MipsFrameLowering's constructor. 2013-03-29 01:51:04 +00:00
MipsSEInstrInfo.cpp [mips] Small update to the implementation of eh.return for Mips. 2013-04-02 23:02:07 +00:00
MipsSEInstrInfo.h [mips] Define overloaded versions of storeRegToStack and loadRegFromStack. 2013-03-29 02:14:12 +00:00
MipsSEISelDAGToDAG.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsSEISelDAGToDAG.h This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsSEISelLowering.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsSEISelLowering.h [mips] Move the code which does dag-combine for multiply-add/sub nodes to 2013-03-30 01:42:24 +00:00
MipsSelectionDAGInfo.cpp
MipsSelectionDAGInfo.h
MipsSERegisterInfo.cpp [mips] Define a function which returns the GPR register class. 2013-03-29 19:17:42 +00:00
MipsSERegisterInfo.h [mips] Define a function which returns the GPR register class. 2013-03-29 19:17:42 +00:00
MipsSubtarget.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsSubtarget.h This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsTargetMachine.cpp This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsTargetMachine.h This patch enables llvm to switch between compiling for mips32/mips64 2013-04-09 19:46:01 +00:00
MipsTargetObjectFile.cpp
MipsTargetObjectFile.h