Convert the remaining instructions over, branches and calls. Fix a couple
[oota-llvm.git] / lib / Target / Sparc / README.txt
1
2 Meta TODO list:
3 1. Convert asmprinter to use lib/CodeGen/AsmPrinter for global init printing
4    constant pool printing, etc.
5 2. Create a new DAG -> DAG instruction selector, by adding patterns to the
6    instructions.
7 3. profit!
8
9
10 SparcV8 backend skeleton
11 ------------------------
12
13 This directory houses a 32-bit SPARC V8 backend employing an expander-based
14 instruction selector.  It is not yet functionally complete.  Watch
15 this space for more news coming soon!
16
17 Current expected test failures
18 ------------------------------
19
20 Here are the currently-expected SingleSource failures for V8
21 (Some C++ programs are crashing in libstdc++ at the moment;
22 I'm not sure why.)
23
24   (llc) SingleSource/Regression/C++/EH/exception_spec_test
25   (llc) SingleSource/Regression/C++/EH/throw_rethrow_test
26
27 Here are the currently-expected MultiSource failures for V8:
28
29   (llc,cbe) MultiSource/Applications/d/make_dparser
30   (llc,cbe) MultiSource/Applications/hexxagon
31   (llc) MultiSource/Benchmarks/Fhourstones
32   (llc,cbe) MultiSource/Benchmarks/McCat/03-testtrie
33   (llc) MultiSource/Benchmarks/McCat/18-imp
34   (llc,cbe) MultiSource/Benchmarks/Prolangs-C/bison/mybison
35   (llc,cbe) MultiSource/Benchmarks/Prolangs-C/fixoutput
36   (llc,cbe) MultiSource/Benchmarks/Prolangs-C/gnugo
37   (llc,cbe) MultiSource/Benchmarks/Prolangs-C/plot2fig
38   (llc,cbe) MultiSource/Benchmarks/Ptrdist/anagram
39   (llc,cbe) MultiSource/Benchmarks/FreeBench/analyzer
40     * DANGER * analyzer will run the machine out of VM
41   (I don't know whether the following fail in cbe:)
42   (llc) MultiSource/Benchmarks/FreeBench/distray
43   (llc) MultiSource/Benchmarks/FreeBench/fourinarow
44   (llc) MultiSource/Benchmarks/FreeBench/pifft
45   (llc) MultiSource/Benchmarks/MallocBench/gs
46   (llc) MultiSource/Benchmarks/Prolangs-C++/deriv1
47   (llc) MultiSource/Benchmarks/Prolangs-C++/deriv2
48
49 Known SPEC failures for V8 (probably not an exhaustive list):
50
51   (llc) 134.perl
52   (llc) 177.mesa
53   (llc) 188.ammp -- FPMover bug?
54   (llc) 256.bzip2
55   (llc,cbe) 130.li
56   (native,llc,cbe) 126.gcc
57   (native,llc,cbe) 255.vortex
58
59 To-do
60 -----
61
62 * support shl on longs (fourinarow needs this)
63 * support casting 64-bit integers to FP types (fhourstones needs this)
64 * support FP rem (call fmod)
65
66 * Keep the address of the constant pool in a register instead of forming its
67   address all of the time.
68
69 * Change code like this:
70         or      %o0, %lo(.CPI_main_0), %o0
71         ld      [%o0+0], %o0
72   into:
73         ld      [%o0+%lo(.CPI_main_0)], %o0
74   for constant pool access.
75
76 * We can fold small constant offsets into the %hi/%lo references to constant
77   pool addresses as well.
78
79 * Directly support select instructions, and fold setcc instructions into them
80   where possible.  I think this is what afflicts the inner loop of Olden/tsp
81   (hot block = tsp():no_exit.1.i, overall GCC/LLC = 0.03).
82
83 * Generate fsqrtd for calls to sqrt()  (~ 4% speedup on Olden/tsp).
84
85 $Date$
86