LLVM backend for 6502
Go to file
Chris Lattner abd2182875 Add a simple transformation. This allows us to compile one of the inner
loops in stepanov to this:

.LBB_Z5test0PdS__2:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        cmpl $2000, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2

instead of this:

.LBB_Z5test0PdS__2:     # no_exit.1
        fldl data(,%eax,8)
        fldl 24(%esp)
        faddp %st(1)
        fstl 24(%esp)
        incl %eax
        movl $data, %ecx
        movl %ecx, %edx
        addl $16000, %edx
        subl %ecx, %edx
        movl %edx, %ecx
        sarl $2, %ecx
        shrl $29, %ecx
        addl %ecx, %edx
        sarl $3, %edx
        cmpl %edx, %eax
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2

The old instruction selector produced:

.LBB_Z5test0PdS__2:     # no_exit.1
        fldl 24(%esp)
        faddl data(,%eax,8)
        fstl 24(%esp)
        movl %eax, %ecx
        incl %ecx
        incl %eax
        leal data+16000, %edx
        movl $data, %edi
        subl %edi, %edx
        movl %edx, %edi
        sarl $2, %edi
        shrl $29, %edi
        addl %edi, %edx
        sarl $3, %edx
        cmpl %edx, %ecx
        fstpl 16(%esp)
        #FP_REG_KILL
        jl .LBB_Z5test0PdS__2   # no_exit.1

Which is even worse!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19419 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-09 20:09:57 +00:00
autoconf The Java project now lives under projects/llvm-java. 2005-01-05 17:57:28 +00:00
docs Eliminate empty sub-list 2005-01-08 01:11:15 +00:00
examples Use LLVMLIBS=JIT to get JIT libraries 2004-11-29 07:17:18 +00:00
include/llvm Get lib/Analysis/DataStructure to compile with VC++ 2005-01-09 04:18:28 +00:00
lib Add a simple transformation. This allows us to compile one of the inner 2005-01-09 20:09:57 +00:00
projects Ignore autoconf/aclocal generated stuff. 2005-01-05 17:26:00 +00:00
runtime Remove dead directories 2005-01-02 22:55:16 +00:00
test Test fails on all platforms, not just linux 2005-01-08 23:44:03 +00:00
tools X86 BE requires SelectionDAG 2005-01-07 07:51:25 +00:00
utils rename linscan -> LLCBETA as it should be 2005-01-08 21:03:58 +00:00
win32 Get lib/Analysis/DataStructure to compile with VC++ 2005-01-09 04:18:28 +00:00
.cvsignore Ignore the autom4te.cache directoy. 2004-12-24 15:11:23 +00:00
configure The Java project now lives under projects/llvm-java. 2005-01-05 17:57:28 +00:00
CREDITS.TXT Add MMC 2004-11-18 21:04:21 +00:00
LICENSE.TXT Another year, another copyright update. 2005-01-08 19:10:44 +00:00
llvm.spec Updated for 1.3. 2004-08-16 15:17:40 +00:00
llvm.spec.in Updated for 1.3. 2004-08-16 15:17:40 +00:00
Makefile Remove the check target. Its now in Makefile.rules 2004-12-06 05:35:00 +00:00
Makefile.common No really, this is LLVM! 2004-10-30 00:57:52 +00:00
Makefile.config.in For PR351: 2004-12-31 22:54:28 +00:00
Makefile.rules X86 JIT requires the selection dag library. 2005-01-07 07:51:11 +00:00
README.txt Make the text of this file a little more useful. 2004-09-02 22:49:27 +00:00

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.