llvm-6502/lib/Target/Sparc
Chris Lattner 86638b94c1 Compile this:
void %X(int %A) {
        %C = setlt int %A, 123          ; <bool> [#uses=1]
        br bool %C, label %T, label %F

T:              ; preds = %0
        call int %main( int 0 )         ; <int>:0 [#uses=0]
        ret void

F:              ; preds = %0
        ret void
}

to this:

X:
        save -96, %o6, %o6
        subcc %i0, 122, %l0
        bg .LBBX_2      ! F
        nop
...

not this:

X:
        save -96, %o6, %o6
        sethi 0, %l0
        or %g0, 1, %l1
        subcc %i0, 122, %l2
        bg .LBBX_4      !
        nop
.LBBX_3:        !
        or %g0, %l0, %l1
.LBBX_4:        !
        subcc %l1, 0, %l0
        bne .LBBX_2     ! F
        nop


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25833 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-31 05:05:52 +00:00
..
.cvsignore ignore generated files 2005-09-07 23:47:44 +00:00
DelaySlotFiller.cpp
FPMover.cpp If the target has V9 instructions, this pass is a noop, don't bother 2006-01-30 05:51:14 +00:00
Makefile Add trivial subtarget support 2006-01-26 06:51:21 +00:00
README.txt First step towards V9 instructions in the V8 backend, two conditional move 2006-01-30 05:35:57 +00:00
Sparc.h remove the V8 simple isel 2006-01-23 07:20:15 +00:00
Sparc.td Subtarget feature can now set any variable to any value 2006-01-27 08:09:42 +00:00
SparcAsmPrinter.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
SparcInstrFormats.td Push ops list, asm string, and pattern all the way up to InstV8. Move the 2005-12-18 08:21:00 +00:00
SparcInstrInfo.cpp Tighten up some checks 2005-12-18 06:40:34 +00:00
SparcInstrInfo.h
SparcInstrInfo.td Revamp the ICC/FCC reading instructions to be parameterized in terms of the 2006-01-30 07:43:04 +00:00
SparcISelDAGToDAG.cpp Compile this: 2006-01-31 05:05:52 +00:00
SparcRegisterInfo.cpp New DAG node properties SNDPInFlag, SNDPOutFlag, and SNDPOptInFlag to replace 2006-01-09 18:28:21 +00:00
SparcRegisterInfo.h Pass extra regclasses into spilling code 2005-09-30 01:29:42 +00:00
SparcRegisterInfo.td Reserve G1 for frame offset stuff and use it to handle large stack frames. 2005-12-20 07:56:31 +00:00
SparcSubtarget.cpp Two changes: 2006-01-30 04:57:43 +00:00
SparcSubtarget.h Rest of subtarget support, remove references to ppc 2006-01-26 07:22:22 +00:00
SparcTargetMachine.cpp Add trivial subtarget support 2006-01-26 06:51:21 +00:00
SparcTargetMachine.h Add trivial subtarget support 2006-01-26 06:51:21 +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].