llvm-6502/lib/Target/Sparc
Chris Lattner 11d53c129f rearrange MCContext ownership. Before LLVMTargetMachine created it
and passing off ownership to AsmPrinter.  Now MachineModuleInfo
creates it and owns it by value.  This allows us to use MCSymbols
more consistently throughout the rest of the code generator, and
simplifies a bit of code.  This also allows MachineFunction to 
keep an MCContext reference handy, and cleans up the TargetRegistry
interfaces for AsmPrinters.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98450 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-13 20:55:24 +00:00
..
AsmPrinter rearrange MCContext ownership. Before LLVMTargetMachine created it 2010-03-13 20:55:24 +00:00
TargetInfo add support for the sparcv9-*-* target triple to turn on 2010-02-04 06:34:01 +00:00
CMakeLists.txt Normalize makefile comments and sort cmake file lists. 2009-08-31 13:05:24 +00:00
DelaySlotFiller.cpp
FPMover.cpp remove various std::ostream version of printing methods from 2009-08-23 03:41:05 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
README.txt Add JIT support to the TODO list (test commit) 2010-03-01 10:40:41 +00:00
Sparc.h add support for the sparcv9-*-* target triple to turn on 2010-02-04 06:34:01 +00:00
Sparc.td
SparcCallingConv.td
SparcInstrFormats.td
SparcInstrInfo.cpp several major improvements to the sparc backend: support for weak linkage 2009-09-15 17:46:24 +00:00
SparcInstrInfo.h several major improvements to the sparc backend: support for weak linkage 2009-09-15 17:46:24 +00:00
SparcInstrInfo.td Set isBarrier = 1 on return instructions, as they are control barriers. 2009-11-11 18:11:07 +00:00
SparcISelDAGToDAG.cpp Sink InstructionSelect() out of each target into SDISel, and rename it 2010-03-02 06:34:30 +00:00
SparcISelLowering.cpp Move TLOF implementations to libCodegen to resolve layering violation. 2010-02-15 22:37:53 +00:00
SparcISelLowering.h Revert 95130. 2010-02-02 23:55:14 +00:00
SparcMachineFunctionInfo.h Add explicit keywords. 2010-03-01 17:56:46 +00:00
SparcMCAsmInfo.cpp Eliminate SetDirective, and replace it with HasSetDirective. 2010-01-26 20:40:54 +00:00
SparcMCAsmInfo.h Rename TargetAsmInfo (and its subclasses) to MCAsmInfo. 2009-08-22 20:48:53 +00:00
SparcRegisterInfo.cpp Change the Value argument to eliminateFrameIndex to a type-tagged value. This 2010-03-09 21:45:49 +00:00
SparcRegisterInfo.h Change the Value argument to eliminateFrameIndex to a type-tagged value. This 2010-03-09 21:45:49 +00:00
SparcRegisterInfo.td several major improvements to the sparc backend: support for weak linkage 2009-09-15 17:46:24 +00:00
SparcSubtarget.cpp add support for the sparcv9-*-* target triple to turn on 2010-02-04 06:34:01 +00:00
SparcSubtarget.h add support for the sparcv9-*-* target triple to turn on 2010-02-04 06:34:01 +00:00
SparcTargetMachine.cpp add support for the sparcv9-*-* target triple to turn on 2010-02-04 06:34:01 +00:00
SparcTargetMachine.h add support for the sparcv9-*-* target triple to turn on 2010-02-04 06:34:01 +00:00

To-do
-----

* Keep the address of the constant pool in a register instead of forming its
  address all of the time.
* We can fold small constant offsets into the %hi/%lo references to constant
  pool addresses as well.
* When in V9 mode, register allocate %icc[0-3].
* Add support for isel'ing UMUL_LOHI instead of marking it as Expand.
* Emit the 'Branch on Integer Register with Prediction' instructions.  It's
  not clear how to write a pattern for this though:

float %t1(int %a, int* %p) {
        %C = seteq int %a, 0
        br bool %C, label %T, label %F
T:
        store int 123, int* %p
        br label %F
F:
        ret float undef
}

codegens to this:

t1:
        save -96, %o6, %o6
1)      subcc %i0, 0, %l0
1)      bne .LBBt1_2    ! F
        nop
.LBBt1_1:       ! T
        or %g0, 123, %l0
        st %l0, [%i1]
.LBBt1_2:       ! F
        restore %g0, %g0, %g0
        retl
        nop

1) should be replaced with a brz in V9 mode.

* Same as above, but emit conditional move on register zero (p192) in V9 
  mode.  Testcase:

int %t1(int %a, int %b) {
        %C = seteq int %a, 0
        %D = select bool %C, int %a, int %b
        ret int %D
}

* Emit MULX/[SU]DIVX instructions in V9 mode instead of fiddling 
  with the Y register, if they are faster.

* Codegen bswap(load)/store(bswap) -> load/store ASI

* Implement frame pointer elimination, e.g. eliminate save/restore for 
  leaf fns.
* Fill delay slots

* Implement JIT support