LLVM backend for 6502
Go to file
Chris Lattner da4ff69153 Teach the latency scheduler some new tricks. In particular, to break ties,
keep track of a sense of "mobility", i.e. how many other nodes scheduling one
node will free up.  For something like this:

float testadd(float *X, float *Y, float *Z, float *W, float *V) {
  return (*X+*Y)*(*Z+*W)+*V;
}

For example, this makes us schedule *X then *Y, not *X then *Z.  The former
allows us to issue the add, the later only lets us issue other loads.

This turns the above code from this:

_testadd:
        lfs f0, 0(r3)
        lfs f1, 0(r6)
        lfs f2, 0(r4)
        lfs f3, 0(r5)
        fadds f0, f0, f2
        fadds f1, f3, f1
        lfs f2, 0(r7)
        fmadds f1, f0, f1, f2
        blr

into this:

_testadd:
        lfs f0, 0(r6)
        lfs f1, 0(r5)
        fadds f0, f1, f0
        lfs f1, 0(r4)
        lfs f2, 0(r3)
        fadds f1, f2, f1
        lfs f2, 0(r7)
        fmadds f1, f1, f0, f2
        blr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26680 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-10 05:51:05 +00:00
autoconf Use -emit-llvm -S to get .ll file output from llvm-gcc 2006-02-27 05:39:00 +00:00
docs Adding an intrinsic is simpler still. 2006-03-09 22:38:42 +00:00
examples Upgrade this to use the new intrinsic names 2006-03-03 01:31:12 +00:00
include/llvm Fix an incorrect intrinsic description 2006-03-10 04:17:06 +00:00
lib Teach the latency scheduler some new tricks. In particular, to break ties, 2006-03-10 05:51:05 +00:00
projects Convert over to the new way of handling lex/bison checked into cvs 2006-02-15 07:26:07 +00:00
runtime Make the new and old front-ends more similar: now neither uses __main. 2006-03-09 06:16:28 +00:00
test Add a test case for (store (op (load ..) ..) ..) folding. 2006-03-09 19:04:30 +00:00
tools Fix a really annoying bug in bugpoint that made reducing C++ testcases 2006-03-08 23:55:38 +00:00
utils generate side-effect info 2006-03-09 22:37:52 +00:00
win32 Put intrinsics.gen in its proper place. 2006-03-10 04:36:01 +00:00
Xcode Catch up on some of the file addition/deletions. 2006-01-27 13:24:20 +00:00
.cvsignore
configure Use -emit-llvm -S to get .ll file output from llvm-gcc 2006-02-27 05:39:00 +00:00
CREDITS.TXT Add an entry 2006-01-08 08:25:38 +00:00
LICENSE.TXT
llvm.spec
llvm.spec.in
Makefile
Makefile.common
Makefile.config.in
Makefile.rules Use $(Verb) instead of @ so that VERBOSE=1 will print these. 2006-03-09 06:00:05 +00:00
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.