LLVM backend for 6502
Go to file
Jakob Stoklund Olesen 9bbe4d6c00 Clean up the handling of the x87 fp stack to make it more robust.
Drop the FpMov instructions, use plain COPY instead.

Drop the FpSET/GET instruction for accessing fixed stack positions.
Instead use normal COPY to/from ST registers around inline assembly, and
provide a single new FpPOP_RETVAL instruction that can access the return
value(s) from a call. This is still necessary since you cannot tell from
the CALL instruction alone if it returns anything on the FP stack. Teach
fast isel to use this.

This provides a much more robust way of handling fixed stack registers -
we can tolerate arbitrary FP stack instructions inserted around calls
and inline assembly. Live range splitting could sometimes break x87 code
by inserting spill code in unfortunate places.

As a bonus we handle floating point inline assembly correctly now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134018 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28 18:32:28 +00:00
autoconf build/configure: Add support for --with-extra-ld-options flag (to provide extra 2011-06-16 22:30:38 +00:00
bindings Fix compiling the ocaml kaleidoscope tutorials 2011-02-09 18:32:02 +00:00
cmake Update CMake library dependencies. 2011-06-25 02:10:19 +00:00
docs Document nonlazybind. 2011-06-16 16:03:13 +00:00
examples Modify comment. 2011-06-09 20:11:46 +00:00
include PR10210: New method ConstantArray::getAsCString(). Use it in LTO to 2011-06-28 08:24:19 +00:00
lib Clean up the handling of the x87 fp stack to make it more robust. 2011-06-28 18:32:28 +00:00
projects Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
runtime Fix build for (some versions of?) MinGW. Patch by Ruben Van Boxem. 2011-06-23 18:24:27 +00:00
test Clean up the handling of the x87 fp stack to make it more robust. 2011-06-28 18:32:28 +00:00
tools Reinstate r133516 "Remove some unnecessary uses of c_str()." A trailing null 2011-06-28 18:26:12 +00:00
unittests Fix the implementation of ConstantRange::sub(ConstantRange). Patch by Xi Wang! 2011-06-22 21:13:46 +00:00
utils Alternative name enum should go into the enum portion. 2011-06-28 01:36:01 +00:00
website
.gitignore Ignore Vim swap files 2011-05-31 21:54:28 +00:00
build-for-llvm-top.sh
CMakeLists.txt Rename profile_rt.so to libprofile_rt.so under configure+make (it already was 2011-04-29 02:12:06 +00:00
configure Regenerate configure. 2011-06-16 22:30:41 +00:00
CREDITS.TXT Another git svn dcommit test. This time let's hope it doesn't kill my repo. 2010-12-10 14:45:10 +00:00
LICENSE.TXT Happy new year. 2011-06-12 15:26:54 +00:00
llvm.spec.in
Makefile Install libprofile_rt.dylib where it's more available for gcov support. 2011-06-10 21:47:14 +00:00
Makefile.common
Makefile.config.in build/configure: Add support for --with-extra-ld-options flag (to provide extra 2011-06-16 22:30:38 +00:00
Makefile.rules Starting to refactor Target to separate out code that's needed to fully describe 2011-06-24 01:44:41 +00:00
ModuleInfo.txt Remove trailing space. This is just an excuse to poke the 2010-10-05 20:32:15 +00:00
README.txt reverting test commit 2011-05-12 17:38:08 +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.