llvm/lib/Target/IA64
Dan Gohman b5bec2b6f6 Pass a SelectionDAG into SDNode::dump everywhere it's used, in prepration
for needing the DAG node to print pre-legalize extended value types, and
to get better debug messages with target-specific nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37656 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-19 14:13:56 +00:00
..
.cvsignore ignore generated files 2005-09-07 23:47:44 +00:00
IA64.h remove a dead proto 2006-08-03 18:51:04 +00:00
IA64.td getCalleeSaveRegs and getCalleeSaveRegClasses are no long TableGen'd. 2006-05-18 00:12:58 +00:00
IA64AsmPrinter.cpp For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid 2007-01-30 20:08:39 +00:00
IA64Bundling.cpp Drop 'const' 2007-05-03 01:11:54 +00:00
IA64InstrBuilder.h There shalt be only one "immediate" operand type! 2006-05-04 17:21:20 +00:00
IA64InstrFormats.td add FP compares and implicit register defs to the dag isel 2005-10-31 01:42:11 +00:00
IA64InstrInfo.cpp RemoveBranch() and InsertBranch() now returns number of instructions deleted / inserted. 2007-05-18 00:05:48 +00:00
IA64InstrInfo.h RemoveBranch() and InsertBranch() now returns number of instructions deleted / inserted. 2007-05-18 00:05:48 +00:00
IA64InstrInfo.td implement anyextend from i1 -> i64 2007-05-05 22:17:00 +00:00
IA64ISelDAGToDAG.cpp Pass a SelectionDAG into SDNode::dump everywhere it's used, in prepration 2007-06-19 14:13:56 +00:00
IA64ISelLowering.cpp Removed tabs everywhere except autogenerated & external files. Add make 2007-04-16 18:10:23 +00:00
IA64ISelLowering.h Finish off bug 680, allowing targets to custom lower frame and return 2007-01-29 22:58:52 +00:00
IA64MachineFunctionInfo.h Remove trailing whitespace 2005-04-21 23:13:11 +00:00
IA64RegisterInfo.cpp eliminateFrameIndex() change. 2007-05-01 09:13:03 +00:00
IA64RegisterInfo.h eliminateFrameIndex() change. 2007-05-01 09:13:03 +00:00
IA64RegisterInfo.td Constify some methods. Patch provided by Anton Vayvod, thanks! 2006-08-17 22:00:08 +00:00
IA64TargetAsmInfo.cpp Break out target asm info into separate files. 2006-09-07 22:05:02 +00:00
IA64TargetAsmInfo.h Break out target asm info into separate files. 2006-09-07 22:05:02 +00:00
IA64TargetMachine.cpp 1. Remove condition on delete. 2006-09-07 23:39:26 +00:00
IA64TargetMachine.h 1. Remove condition on delete. 2006-09-07 23:39:26 +00:00
Makefile DAG->DAG instruction selection for ia64! "hello world" works, not much else. 2005-10-28 17:46:35 +00:00
README If a function is vararg, never pass inreg arguments in registers. Thanks to 2007-06-19 00:13:10 +00:00

*** README for the LLVM IA64 Backend "Version 0.01" - March 18, 2005
*** Quote for this version:

      "Kaori and Hitomi are naughty!!"


Congratulations, you have found:

**************************************************************** 
* @@@       @@@       @@@  @@@  @@@@@@@@@@                     *
* @@@       @@@       @@@  @@@  @@@@@@@@@@@                    *
* @@!       @@!       @@!  @@@  @@! @@! @@!                    *
* !@!       !@!       !@!  @!@  !@! !@! !@!                    *
* @!!       @!!       @!@  !@!  @!! !!@ @!@                    *
* !!!       !!!       !@!  !!!  !@!   ! !@!                    *
* !!:       !!:       :!:  !!:  !!:     !!:                    *
*  :!:       :!:       ::!!:!   :!:     :!:                    *
*  :: ::::   :: ::::    ::::    :::     ::                     *
* : :: : :  : :: : :     :       :      :                      *
*                                                              *
*                                                              *
*  @@@@@@   @@@  @@@       @@@   @@@@@@     @@@@@@       @@@   *
* @@@@@@@@  @@@@ @@@       @@@  @@@@@@@@   @@@@@@@      @@@@   *
* @@!  @@@  @@!@!@@@       @@!  @@!  @@@  !@@          @@!@!   *
* !@!  @!@  !@!!@!@!       !@!  !@!  @!@  !@!         !@!!@!   *
* @!@  !@!  @!@ !!@!       !!@  @!@!@!@!  !!@@!@!    @!! @!!   *
* !@!  !!!  !@!  !!!       !!!  !!!@!!!!  @!!@!!!!  !!!  !@!   *
* !!:  !!!  !!:  !!!       !!:  !!:  !!!  !:!  !:!  :!!:!:!!:  *
* :!:  !:!  :!:  !:!       :!:  :!:  !:!  :!:  !:!  !:::!!:::  *
* ::::: ::   ::   ::        ::  ::   :::  :::: :::       :::   *
*  : :  :   ::    :        :     :   : :   :: : :        :::   *
*                                                              *
****************************************************************
* Bow down, bow down, before the power of IA64! Or be crushed, *
* be crushed, by its jolly registers of doom!!                 *
****************************************************************

DEVELOPMENT PLAN:

   _  you are       2005           maybe 2005       2006            2006 and
  /   here            |               |              |               beyond 
 v                    v               v              v                |
                                                                      v
CLEAN UP        ADD INSTRUCTION      ADD          PLAY WITH
INSTRUCTION --> SCHEDULING AND  -->  JIT    -->    DYNAMIC     --> FUTURE WORK
SELECTION       BUNDLING            SUPPORT     REOPTIMIZATION

DISCLAIMER AND PROMISE:

As of the time of this release, you are probably better off using Intel C/C++
or GCC. The performance of the code emitted right now is, in a word,
terrible. Check back in a few months - the story will be different then,
I guarantee it.

TODO:

  - stop passing FP args in both FP *and* integer regs when not required
  - allocate low (nonstacked) registers more aggressively
  - clean up and thoroughly test the isel patterns.
  - fix stacked register allocation order: (for readability) we don't want
    the out? registers being the first ones used
  - fix up floating point
    (nb http://gcc.gnu.org/wiki?pagename=ia64%20floating%20point )
  - bundling!
    (we will avoid the mess that is:
     http://gcc.gnu.org/ml/gcc/2003-12/msg00832.html )
  - instruction scheduling (hmmmm! ;)
  - write truly inspirational documentation
  - if-conversion (predicate database/knowledge? etc etc)
  - counted loop support
  - make integer + FP mul/div more clever (we have fixed pseudocode atm)
  - track and use comparison complements

INFO:

  - we are strictly LP64 here, no support for ILP32 on HP-UX. Linux users
    don't need to worry about this.
  - i have instruction scheduling/bundling pseudocode, that really works
    (has been tested, albeit at the perl-script level).
    so, before you go write your own, send me an email!

KNOWN DEFECTS AT THE CURRENT TIME:

  - C++ vtables contain naked function pointers, not function descriptors,
  which is bad. see http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=406
  - varargs are broken
  - alloca doesn't work (indeed, stack frame layout is bogus)
  - no support for big-endian environments
  - (not really the backend, but...) the CFE has some issues on IA64.
    these will probably be fixed soon.
  
ACKNOWLEDGEMENTS:

  - Chris Lattner (x100)
  - Other LLVM developers ("hey, that looks familiar")

CONTACT:

  - You can email me at duraid@octopus.com.au. If you find a small bug,
    just email me. If you find a big bug, please file a bug report
    in bugzilla! http://llvm.cs.uiuc.edu is your one stop shop for all
    things LLVM.