More templatization.
[oota-llvm.git] / lib / Target / IA64 / README
1 *** README for the LLVM IA64 Backend "Version 0.01" - March 18, 2005
2 *** Quote for this version:
3
4       "Kaori and Hitomi are naughty!!"
5
6
7 Congratulations, you have found:
8
9 **************************************************************** 
10 * @@@       @@@       @@@  @@@  @@@@@@@@@@                     *
11 * @@@       @@@       @@@  @@@  @@@@@@@@@@@                    *
12 * @@!       @@!       @@!  @@@  @@! @@! @@!                    *
13 * !@!       !@!       !@!  @!@  !@! !@! !@!                    *
14 * @!!       @!!       @!@  !@!  @!! !!@ @!@                    *
15 * !!!       !!!       !@!  !!!  !@!   ! !@!                    *
16 * !!:       !!:       :!:  !!:  !!:     !!:                    *
17 *  :!:       :!:       ::!!:!   :!:     :!:                    *
18 *  :: ::::   :: ::::    ::::    :::     ::                     *
19 * : :: : :  : :: : :     :       :      :                      *
20 *                                                              *
21 *                                                              *
22 *  @@@@@@   @@@  @@@       @@@   @@@@@@     @@@@@@       @@@   *
23 * @@@@@@@@  @@@@ @@@       @@@  @@@@@@@@   @@@@@@@      @@@@   *
24 * @@!  @@@  @@!@!@@@       @@!  @@!  @@@  !@@          @@!@!   *
25 * !@!  @!@  !@!!@!@!       !@!  !@!  @!@  !@!         !@!!@!   *
26 * @!@  !@!  @!@ !!@!       !!@  @!@!@!@!  !!@@!@!    @!! @!!   *
27 * !@!  !!!  !@!  !!!       !!!  !!!@!!!!  @!!@!!!!  !!!  !@!   *
28 * !!:  !!!  !!:  !!!       !!:  !!:  !!!  !:!  !:!  :!!:!:!!:  *
29 * :!:  !:!  :!:  !:!       :!:  :!:  !:!  :!:  !:!  !:::!!:::  *
30 * ::::: ::   ::   ::        ::  ::   :::  :::: :::       :::   *
31 *  : :  :   ::    :        :     :   : :   :: : :        :::   *
32 *                                                              *
33 ****************************************************************
34 * Bow down, bow down, before the power of IA64! Or be crushed, *
35 * be crushed, by its jolly registers of doom!!                 *
36 ****************************************************************
37
38 DEVELOPMENT PLAN:
39
40    _  you are       2005           maybe 2005       2006            2006 and
41   /   here            |               |              |               beyond 
42  v                    v               v              v                |
43                                                                       v
44 CLEAN UP        ADD INSTRUCTION      ADD          PLAY WITH
45 INSTRUCTION --> SCHEDULING AND  -->  JIT    -->    DYNAMIC     --> FUTURE WORK
46 SELECTION       BUNDLING            SUPPORT     REOPTIMIZATION
47
48 DISCLAIMER AND PROMISE:
49
50 As of the time of this release, you are probably better off using Intel C/C++
51 or GCC. The performance of the code emitted right now is, in a word,
52 terrible. Check back in a few months - the story will be different then,
53 I guarantee it.
54
55 TODO:
56
57   - stop passing FP args in both FP *and* integer regs when not required
58   - allocate low (nonstacked) registers more aggressively
59   - clean up and thoroughly test the isel patterns.
60   - fix stacked register allocation order: (for readability) we don't want
61     the out? registers being the first ones used
62   - fix up floating point
63     (nb http://gcc.gnu.org/wiki?pagename=ia64%20floating%20point )
64   - bundling!
65     (we will avoid the mess that is:
66      http://gcc.gnu.org/ml/gcc/2003-12/msg00832.html )
67   - instruction scheduling (hmmmm! ;)
68   - write truly inspirational documentation
69   - if-conversion (predicate database/knowledge? etc etc)
70   - counted loop support
71   - make integer + FP mul/div more clever (we have fixed pseudocode atm)
72   - track and use comparison complements
73
74 INFO:
75
76   - we are strictly LP64 here, no support for ILP32 on HP-UX. Linux users
77     don't need to worry about this.
78   - i have instruction scheduling/bundling pseudocode, that really works
79     (has been tested, albeit at the perl-script level).
80     so, before you go write your own, send me an email!
81
82 KNOWN DEFECTS AT THE CURRENT TIME:
83
84   - C++ vtables contain naked function pointers, not function descriptors,
85   which is bad. see http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=406
86   - varargs are broken
87   - alloca doesn't work (indeed, stack frame layout is bogus)
88   - no support for big-endian environments
89   - (not really the backend, but...) the CFE has some issues on IA64.
90     these will probably be fixed soon.
91   
92 ACKNOWLEDGEMENTS:
93
94   - Chris Lattner (x100)
95   - Other LLVM developers ("hey, that looks familiar")
96
97 CONTACT:
98
99   - You can email me at duraid@octopus.com.au. If you find a small bug,
100     just email me. If you find a big bug, please file a bug report
101     in bugzilla! http://llvm.cs.uiuc.edu is your one stop shop for all
102     things LLVM.
103
104
105
106