LLVM backend for 6502
Go to file
Chris Lattner 11390e76e7 Add support to the local allocator for fusing spill code into the instructions
that need them.  This is very useful on CISCy targets like the X86 because it
reduces the total spill pressure, and makes better use of it's (large)
instruction set.  Though the X86 backend doesn't know how to rewrite many
instructions yet, this already makes a substantial difference on 176.gcc for
example:

Before:
Time:
   8.0099 ( 31.2%)   0.0100 ( 12.5%)   8.0199 ( 31.2%)   7.7186 ( 30.0%)  Local Register Allocator

Code quality:
734559 asm-printer           - Number of machine instrs printed
111395 ra-local              - Number of registers reloaded
 79902 ra-local              - Number of registers spilled
231554 x86-peephole          - Number of peephole optimization performed

After:
Time:
   7.8700 ( 30.6%)   0.0099 ( 19.9%)   7.8800 ( 30.6%)   7.7892 ( 30.2%)  Local Register Allocator
Code quality:
733083 asm-printer           - Number of machine instrs printed
  2379 ra-local              - Number of reloads fused into instructions
109046 ra-local              - Number of registers reloaded
 79881 ra-local              - Number of registers spilled
230658 x86-peephole          - Number of peephole optimization performed

So by fusing 2300 instructions, we reduced the  static number of instructions
by 1500, and reduces the number of peepholes (and thus the work) by about 900.
This also clearly reduces the number of reload/spill instructions that are
emitted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11542 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-17 08:09:40 +00:00
autoconf Adjusted the default pathname to the SPEC95 benchmarks. The new directory 2004-02-16 14:55:18 +00:00
docs PreSelection isn't optional and so there's no way to turn it off. 2004-02-16 19:45:26 +00:00
examples/ModuleMaker Configure script for ModuleMaker. 2003-11-25 20:02:07 +00:00
include The CBE is no longer in llvm-dis 2004-02-17 06:39:48 +00:00
lib Add support to the local allocator for fusing spill code into the instructions 2004-02-17 08:09:40 +00:00
projects Remove dependence on the return type of ConstantArray::get 2004-02-15 04:05:58 +00:00
runtime Make sure to copy the null terminator at the end of the argv list. Some 2004-02-10 19:14:44 +00:00
test New testcase, details in the comments 2004-02-16 06:35:19 +00:00
tools The CBE is now in llc, not llvm-dis 2004-02-17 06:40:51 +00:00
utils exit(1) instead of abort()'ing on error 2004-02-13 16:37:43 +00:00
.cvsignore
configure Adjusted the default pathname to the SPEC95 benchmarks. The new directory 2004-02-16 14:55:18 +00:00
CREDITS.TXT Added Stacker to Reid Spencer's list of contributions. 2003-12-17 18:15:04 +00:00
LICENSE.TXT Preemptive additions for the MallocBench tests. 2004-02-16 23:32:26 +00:00
llvm.spec RPM spec file for LLVM tools and libraries. 2004-02-10 03:57:51 +00:00
llvm.spec.in RPM spec file for LLVM tools and libraries. 2004-02-10 03:57:51 +00:00
Makefile Should fix pr220 - "make install" doesn't install header files when 2004-02-10 01:10:01 +00:00
Makefile.common Added LLVM copyright notice. 2003-10-21 14:33:46 +00:00
Makefile.config.in Added check for target machine endian-ness and put the result into 2004-02-13 21:57:29 +00:00
Makefile.rules Define DEPRECATED so that it can be used in function and variable 2004-02-13 20:05:44 +00:00
README.txt Merged in RELEASE_1. 2003-10-27 18:02:06 +00:00

                       The LLVM Compiler Infrastructure
                           http://llvm.cs.uiuc.edu

Welcome to LLVM!
----------------
This file is intended to do four things:
(1) help you get started using LLVM;
(2) tell you how to get questions about LLVM answered;
(3) tell you where to find documentation for different kinds of questions; and
(4) tell you about three LLVM-related mailing lists.


Getting Started with LLVM
-------------------------

(1) For license information:
    llvm/LICENSE.txt

(2) Installing and compiling LLVM:
    llvm/docs/GettingStarted.html

(3) Learn about features and limitations of this release:
    llvm/docs/ReleaseNotes.html

(4) Learn how to write a pass within the LLVM system:
	llvm/docs/WritingAnLLVMPass.html

(5) Learn how to start a new development project using LLVM, where your
    new source code can live anywhere (outside or inside the LLVM tree),
    while using LLVM header files and libraries:
    llvm/docs/Projects.html


Getting Help with LLVM
----------------------

(1) If you have questions or development problems not answered in the
    documentation, send e-mail to llvmdev@cs.uiuc.edu.  This mailing list is
    monitored by all the people in the LLVM group at Illinois, and you should
    expect prompt first responses.

(2) To report a bug, submit a bug report as described in the document:
    http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html

(3) We now use Bugzilla to track bugs, so you can check the status of
    previous bugs at:
    http://llvm.cs.uiuc.edu/bugs/query.cgi

LLVM Documentation
------------------

All the documents mentioned below except the design overview tech report
are included as part of the LLVM release (in llvm/docs/*):

LLVM Design Overview:
    LLVM : A Compilation Framework for Lifelong Program Analysis
    and Transformation:
        http://llvm.cs.uiuc.edu/pubs/2003-09-30-LifelongOptimizationTR.html

LLVM User Guides:

    Download and Installation Instructions:
        llvm/docs/GettingStarted.html

    LLVM Command Guide:
        llvm/docs/CommandGuide/index.html

    LLVM Assembly Language:
        llvm/docs/LangRef.html

    LLVM Test Suite Guide:
        llvm/docs/TestingGuide.html

LLVM Programming Documentation:

    LLVM Programmers Manual:
        llvm/docs/ProgrammersManual.html

    Writing an LLVM Pass:
        llvm/docs/WritingAnLLVMPass.html

    Alias Analysis in LLVM:
        llvm/docs/AliasAnalysis.html

    Command Line Library:
        llvm/docs/CommandLine.html

    Coding Standards:
        llvm/docs/CodingStandards.html

Other LLVM Resources:

    Submitting a Bug:
        http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html

    Open Projects:
        llvm/docs/OpenProjects.html

    Creating a new LLVM Project:
        llvm/docs/Projects.html

Mailing Lists
--------------
There are three mailing lists for providing LLVM users with information:

(1) LLVM Announcements List:
    http://mail.cs.uiuc.edu/mailman/listinfo/llvm-announce

    This is a low volume list that provides important announcements regarding
    LLVM.  It is primarily intended to announce new releases, major updates to
    the software, etc.  This list is highly recommended for anyone that uses
    LLVM.

(2) LLVM Developers List:
    http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev

    This list is for people who want to be included in technical discussions
    of LLVM.  People post to this list when they have questions about writing
    code for or using the LLVM tools.  It is relatively low volume.

(3) LLVM Commits List
    http://mail.cs.uiuc.edu/mailman/listinfo/llvm-commits

    This list contains all commit messages that are made when LLVM developers
    commit code changes to the CVS archive.  It is useful for those who want to
    stay on the bleeding edge of LLVM development. This list is very high
    volume.