LLVM backend for 6502
Go to file
Daniel Dunbar 20927f26fc llvm-mc/AsmMatcher: Move to a slightly more sane matching design.
- Still not very sane, but a least its not 60k lines on X86. :)

 - In terms of correctness, currently some things are hard wired for X86, and we
   still don't properly resolve ambiguities (this is ignoring the instructions
   we don't even match due to funny .td stuff or other corner cases).

The high level changes:
 1. Represent tokens which are significant for matching explicitly as separate
    operands. This uniformly handles not only the instruction mnemonic, but
    also 'signficiant' syntax like the '*' in "call * ...".

 2. Separate the matching of operands to an instruction from the construction of
    the MCInst. In theory this can be done during matching, but since the number
    of variations is small I think it makes sense to decompose the problems.

 3. Improved a few of the mechanisms to at least successfully flatten / tokenize
    the assembly strings for PowerPC and ARM.

 4. The comment at the top of AsmMatcherEmitter.cpp explains the approach I'm
    moving towards for handling ambiguous instructions. The high-bit is to infer
    a partial ordering of the operand classes (and force the user to specify one
    if we can't) and use that to resolve ambiguities.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78378 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-07 08:26:05 +00:00
autoconf Build Blackfin target with autoconf and cmake. 2009-08-02 17:32:37 +00:00
bindings Reorder the "Metadata" entry to match the C bindings. 2009-07-21 21:52:57 +00:00
cmake CMake configuration: find mkdtemp, mkstemp, mktemp. 2009-07-27 18:23:41 +00:00
docs Add note about msys perl needed for windows/mingw32 builds. 2009-08-06 12:54:58 +00:00
examples Move a few more APIs back to 2.5 forms. The only remaining ones left to change back are 2009-07-31 20:28:14 +00:00
include Use std::string() instead of std::string(""). 2009-08-07 01:43:45 +00:00
lib llvm-mc/AsmMatcher: Move to a slightly more sane matching design. 2009-08-07 08:26:05 +00:00
projects remove dead makefile flags. 2009-06-24 05:29:56 +00:00
runtime Drop toy GC runtime. 2009-03-02 03:46:48 +00:00
test llvm-mc/AsmMatcher: Move to a slightly more sane matching design. 2009-08-07 08:26:05 +00:00
tools llvm-ld has a new option called -b to specify the name of bitcode output file, use that. 2009-08-06 04:09:26 +00:00
unittests Update unit test. 2009-08-05 23:28:57 +00:00
utils llvm-mc/AsmMatcher: Move to a slightly more sane matching design. 2009-08-07 08:26:05 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +00:00
win32 Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types. More to come. 2009-07-24 23:12:02 +00:00
Xcode Remove the IA-64 backend. 2009-07-24 00:30:09 +00:00
build-for-llvm-top.sh Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
CMakeLists.txt Build Blackfin target with autoconf and cmake. 2009-08-02 17:32:37 +00:00
configure Build Blackfin target with autoconf and cmake. 2009-08-02 17:32:37 +00:00
CREDITS.TXT Vanity. 2009-08-06 21:54:23 +00:00
LICENSE.TXT one fewer license, yay. :) 2009-08-01 22:54:39 +00:00
llvm.spec.in
Makefile Introduce new headers whose inclusion forces linking and 2009-06-16 20:12:29 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in LLVMC can be now compiled w/o dynamic plugin support. 2009-07-04 03:55:25 +00:00
Makefile.rules Add executable suffix for the tool. This is needed e.g. for 'make install' on mingw32. 2009-08-05 09:37:43 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt README.txt: test commit w/blank line appended 2009-03-23 21:00:45 +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.