Duraid Madina | 37b11a9 | 2005-03-17 20:23:27 +0000 | [diff] [blame] | 1 | *** README for the LLVM IA64 Backend "Version 0.01" - March 18, 2005 |
Duraid Madina | 9b9d45f | 2005-03-17 18:17:03 +0000 | [diff] [blame] | 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 | |
Duraid Madina | 7a8ef3a | 2005-11-01 05:49:08 +0000 | [diff] [blame] | 57 | - stop passing FP args in both FP *and* integer regs when not required |
| 58 | - allocate low (nonstacked) registers more aggressively |
Duraid Madina | 9b9d45f | 2005-03-17 18:17:03 +0000 | [diff] [blame] | 59 | - clean up and thoroughly test the isel patterns. |
Duraid Madina | e8fd25f | 2005-04-12 18:42:59 +0000 | [diff] [blame] | 60 | - fix stacked register allocation order: (for readability) we don't want |
| 61 | the out? registers being the first ones used |
Duraid Madina | 9b9d45f | 2005-03-17 18:17:03 +0000 | [diff] [blame] | 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 ) |
Duraid Madina | 7a8ef3a | 2005-11-01 05:49:08 +0000 | [diff] [blame] | 67 | - instruction scheduling (hmmmm! ;) |
Duraid Madina | 9b9d45f | 2005-03-17 18:17:03 +0000 | [diff] [blame] | 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 | |
Duraid Madina | beeaab2 | 2005-03-31 12:31:11 +0000 | [diff] [blame] | 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 |
Duraid Madina | 9b9d45f | 2005-03-17 18:17:03 +0000 | [diff] [blame] | 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 | |