LLVM backend for 6502
Go to file
Chris Lattner e3486a4c9a Now that tblgen can handle matching implicit defs of instructions
to input patterns, we can fix X86ISD::CMP and X86ISD::BT as taking
two inputs (which have to be the same type) and *returning an i32*.
This is how the SDNodes get made in the graph, but we weren't able
to model it this way due to deficiencies in the pattern language.

Now we can change things like this:

 def UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
-                  [(X86cmp RFP80:$lhs, RFP80:$rhs),
-                   (implicit EFLAGS)]>; // CC = ST(0) cmp ST(i)
+                  [(set EFLAGS, (X86cmp RFP80:$lhs, RFP80:$rhs))]>;

and fix terrible crimes like this:

-def : Pat<(parallel (X86cmp GR8:$src1, 0), (implicit EFLAGS)),
+def : Pat<(X86cmp GR8:$src1, 0),
           (TEST8rr GR8:$src1, GR8:$src1)>;

This relies on matching the result of TEST8rr (which is EFLAGS, which is
an implicit def) to the result of X86cmp, an i32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98903 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 00:01:11 +00:00
autoconf Tell Valgrind when we modify already-executed machine code so it knows 2010-03-15 04:57:55 +00:00
bindings Add OCaml tutorial to the examples. 2010-03-08 19:32:27 +00:00
cmake Tell Valgrind when we modify already-executed machine code so it knows 2010-03-15 04:57:55 +00:00
docs Adding MicroBlaze as an experimental backend in the release notes 2010-03-18 14:31:30 +00:00
examples Don't always run the ocaml kaleidoscope tutorials. 2010-03-08 20:07:32 +00:00
include use ins/outs 2010-03-18 20:55:31 +00:00
lib Now that tblgen can handle matching implicit defs of instructions 2010-03-19 00:01:11 +00:00
projects Testing subversion commit access 2010-02-23 15:11:17 +00:00
runtime disable this for mingw as well, we really need a 'has no dynamic linking' predicate. 2010-03-06 18:54:37 +00:00
test Work around a valgrind oddity where it doesn't pass the full path of a 2010-03-18 22:56:02 +00:00
tools Changed install_name for libEnhancedDisassembly.dylib on 2010-03-17 22:01:36 +00:00
unittests another one 2010-03-18 18:59:08 +00:00
utils expand tblgen's support for instructions with implicit defs. 2010-03-18 23:57:40 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +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 CMake: Add options for using static runtime on MSVC++ build. 2010-03-18 13:52:05 +00:00
configure Tell Valgrind when we modify already-executed machine code so it knows 2010-03-15 04:57:55 +00:00
CREDITS.TXT Adding the MicroBlaze backend. 2010-02-23 19:15:24 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in
Makefile Try r96559 for the third time. This time the shared library is only built if 2010-02-25 06:34:33 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Rewrite makefiles to explicitly reference DESTDIR to fix bug 3153. 2010-03-04 20:56:19 +00:00
Makefile.rules remove arm mode workaround for ARM host 2010-03-17 21:28:19 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt Give packagers some advice about how to build LLVM so it's useful to 2010-02-26 00:54:42 +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.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.